Function 从脚本调用时,找不到.zshrc中定义的函数
我在.zshrc文件中定义了一些变量、别名和函数:Function 从脚本调用时,找不到.zshrc中定义的函数,function,scripting,zsh,Function,Scripting,Zsh,我在.zshrc文件中定义了一些变量、别名和函数: export MY_VAR="example" alias my_alias="echo an example" function say_hello { echo "say hello" } 我已经验证了当从终端调用时,所有三个都已定义。但是,当我尝试从另一个脚本调用函数say_hello(它本身是从同一个终端调用的)时,该函数似乎没有定义。我看到“未找到命令”错误。从另一个脚本引用别名和变量MY_VAR时,其定义似乎很好 对可
export MY_VAR="example"
alias my_alias="echo an example"
function say_hello
{
echo "say hello"
}
我已经验证了当从终端调用时,所有三个都已定义。但是,当我尝试从另一个脚本调用函数say_hello(它本身是从同一个终端调用的)时,该函数似乎没有定义。我看到“未找到命令”错误。从另一个脚本引用别名和变量MY_VAR时,其定义似乎很好
对可能发生的事情有什么想法吗?谢谢。当从终端调用zsh时,会以交互模式调用它,从而导致zsh生成其他配置文件,包括
$ZDOTDIR/.zshrc
($HOME/.zshrc
)。默认情况下(在非登录shell中的非交互模式下),它仅源于/etc/zsh/zshenv
*和$ZDOTDIR/.zshenv
($ZDOTDIR
大多数情况下是$HOME
)文件,请参阅man zsh
的最后两部分,命名为启动/关闭文件。我不知道为什么要定义别名(您到底是如何检查的?),但我的变量是在脚本中定义的,因为您导出了它
*/etc/zshenv
根据doc,他们很可能是zsh包的Gentoo维护者,他们将其更改为/etc/zsh/zshenv
注意:将此类函数放入.zshenv
文件中是个坏主意,因为它会创建隐式依赖关系。您应该改用脚本库:将其放入
~/.zsh/say_hello.zsh
做
source ${ZDOTDIR-$HOME}/.zsh/say_hello.zsh
在脚本和.zshrc
中,当从终端调用zsh时,会以交互模式调用它,从而使zsh获取其他配置文件,包括$ZDOTDIR/.zshrc
($HOME/.zshrc
)。默认情况下(在非登录shell中的非交互模式下),它仅源于/etc/zsh/zshenv
*和$ZDOTDIR/.zshenv
($ZDOTDIR
大多数情况下是$HOME
)文件,请参阅man zsh
的最后两部分,命名为启动/关闭文件。我不知道为什么要定义别名(您到底是如何检查的?),但我的变量是在脚本中定义的,因为您导出了它
*/etc/zshenv
根据doc,他们很可能是zsh包的Gentoo维护者,他们将其更改为/etc/zsh/zshenv
注意:将此类函数放入.zshenv
文件中是个坏主意,因为它会创建隐式依赖关系。您应该改用脚本库:将其放入
~/.zsh/say_hello.zsh
做
source ${ZDOTDIR-$HOME}/.zsh/say_hello.zsh
在您的脚本和.zshrc
中,如何执行其他脚本?另一个脚本中的第一行是什么(意思是它实际上使用zsh而不是bash via!/bin/sh
)?如何执行另一个脚本?另一个脚本的第一行是什么(意思是它实际上使用zsh而不是bash via!/bin/sh
)?啊,这就是问题所在。谢谢我还需要第三个shell配置文件,这有点傻,但至少它是一个解决方案。这是如何解决您的问题的,为什么?我觉得这个解释不够清楚。导致函数定义无法定义的确切问题是什么?啊,这就是问题所在。谢谢我还需要第三个shell配置文件,这有点傻,但至少它是一个解决方案。这是如何解决您的问题的,为什么?我觉得这个解释不够清楚。导致函数定义无法定义的确切问题是什么?