我在 ~/.zshrc 中定义了一个函数:
foo() { print "FOO" }
我想将其输出到我的 Tmux 状态栏中。我将其添加到 ~/.tmux.conf:
set -g status-right "foo: #(foo)"
但我只看到了其中的静态部分;函数输出缺失。(虽然我的实际函数更复杂,但即使对于上面的简单示例也是如此。)
当我调用脚本而不是函数时,它工作正常。有什么区别?可以在那里使用函数吗?
答案1
手册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"