为多个 shell 定义函数

为多个 shell 定义函数

我目前正在使用 fish shell。由于我经常使用fishzshbash,我如何在其中一个中定义一个可用于所有 shell 的函数?我必须在 中定义它们吗.profile

在此处输入图片描述

一旦我离开终端并重新使用它,我就会得到:

在此处输入图片描述

答案1

您可以在所使用的每个 shell 的文件中定义该函数~/.*rc。或者,您可以为该函数以及要在所有 shell 中使用的其他 shell 函数创建一个新文件……例如……

nano shell-functions

我在文件里面定义了我的函数......

hi() { echo "How are you $1?" ; }

保存并退出,然后我编辑我的~/.bashrc~/.zshrc并在每个的末尾添加以下行:

source shell-functions

要不就

. shell-functions

其作用相同。

编辑~/.*rc文件后,我打开一个新 shell,并且该功能可用:

$ bash
$ hi zanna
how are you zanna ?
$ zsh
% hi zanna
how are you zanna ?

source命令读取文件并执行其中的命令在当前 shell 中(与运行脚本不同,./script脚本会在新的 shell 中执行)。在这种情况下,您需要为正在打开的 shell 定义一个函数,因此您需要包含source它的文件以使其在 shell 中可用。如果您查看,~/.profile您可以看到一个配置文件引用另一个配置文件的示例,如下所示:

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"

因此,Ubuntu 中的默认~/.profile~/.bashrc。您还可以source通过创建一个文件进行测试,我们将其命名为file1,其中包含一些命令,例如(对于 bash)PS1='I messed up my prompt '保存、退出,然后在 shell 中键入source file1,您将看到效果(打开一个新 shell(例如,键入bash或打开一个新的终端窗口)并且一切都将恢复正常)...

相关内容