我在 ~/.zshrc 中定义了一个函数:
foo() { print "FOO" }
Run Code Online (Sandbox Code Playgroud)
我想在我的 Tmux 状态栏中输出它。我将此添加到 ~/.tmux.conf 中:
set -g status-right "foo: #(foo)"
Run Code Online (Sandbox Code Playgroud)
但我只看到其中的静态部分;缺少函数输出。(虽然我的实际功能更复杂,但即使对于上面的简单示例也是如此。)
当我调用脚本而不是函数时,它工作正常。有什么不同?是否可以在那里使用函数?
在tmux
该男子页指出set
选项:
#(shell-command)
命令输出的第一行
但我很确定,这并不意味着 shell函数,因为tmux
不会shell-command
在当前的 shell 会话中执行,而是启动一个新实例,该实例以非交互式方式启动,因此不提供您的~/.zshrc
配置,因此不知道关于其中定义的函数。
要解决此问题,您可以创建一个名为的 shell脚本foo
#!/bin/zsh -f
source ~/.zshrc # or just the desired function to save parsing time
# use some functions defined in ~/.zshrc
print "FOO"
Run Code Online (Sandbox Code Playgroud)