Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terminal watch无法访问.zshrc中定义的函数_Terminal_Zsh - Fatal编程技术网

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
    起作用?