Terminal watch无法访问.zshrc中定义的函数
我在我的Terminal watch无法访问.zshrc中定义的函数,terminal,zsh,Terminal,Zsh,我在我的.zshrc中定义了一个函数,如下所示: 函数foo{ 回音条 } 我可以自己运行此函数: $foo 酒吧 但是我不能使用监视来运行它: $watch foo sh:1:foo:未找到 演示如何使用Bash执行此操作: $watch-xbash-foo 但这似乎对zsh不起作用 如何使用watch运行用户定义的函数?尝试以下操作: $ watch -x zsh -ic foo zsh-shell。这就是获得zsh函数的方法 -i-交互式~/.zshrc仅适用于交互式shell
.zshrc
中定义了一个函数,如下所示:
函数foo{
回音条
}
我可以自己运行此函数:
$foo
酒吧
但是我不能使用监视来运行它:
$watch foo
sh:1:foo:未找到
演示如何使用Bash执行此操作:
$watch-xbash-foo
但这似乎对zsh不起作用
如何使用watch
运行用户定义的函数?尝试以下操作:
$ watch -x zsh -ic foo
zsh
-shell。这就是获得zsh函数的方法
-i
-交互式<代码>~/.zshrc
仅适用于交互式shell
-c
-表示要读入的foo
是一个命令,而不是shell脚本文件
watch-x
-让watch使用exec
而不是sh-c
()。稍微减少了所涉及的进程数
如果在此处使用交互式shell会导致问题,则可以将函数移动到~/.zshenv
。这样,您就不需要使用-i
选项,因为~/.zshenv
是为交互式Shell和。在这种情况下调用shell函数的一种通用方法是使用zsh-c'zsh_code_HERE'
了解这一方法不起作用的原因可能也很有趣。watch
在内部做什么?这难道不是相关的,也可能是至关重要的:是否有一个公式使watch
起作用?