在 ~/bin
中,我有一个名为 foo
的 shell 脚本,在这个脚本中,我有以下内容,而且只有以下内容:
#!/bin/bash
func(){
echo this is func
}
现在,每当我登录时,如果我调用 foo
,我希望整个 shell 脚本都能运行。也就是说,在命令行中输入 foo
后,就会出现一个名为 func
的 shell 函数,它只是简单地回应“this is func”。然而,这种情况并非如此。即使我调用了 foo
,func
仍然不存在。
如何使该功能存在?事实上,我可以在 ~/.bashrc
中创建别名,但假设我们只限于 bin 中的 shell 脚本。
编辑:foo
被标记为可执行。我可以毫无问题地调用 foo;也就是说,如果我键入 foo
,那么我不会收到任何标准错误,所以我知道 foo
已实现。但是,foo
中的函数 func
似乎不是。
如果将脚本作为命令运行,它会在子进程中运行,并且它对环境所做的任何更改都不会影响原始 shell 进程。如果你想让它修改原来的shell进程,你需要source
它。
source ~/bin/foo
或
. ~/bin/foo
如果 ~/bin
在您的 $PATH
中,您可以将其简化为
. foo
我是一名优秀的程序员,十分优秀!