如何将当前工作目录传递给从.tmux.conf运行的命令?

时间:2015-09-16 06:18:23

标签: tmux

如果当前工作目录位于git存储库中,我希望我的tmux状态行显示有关当前git存储库的一些信息。我写了一个脚本,在给定当前工作目录时打印此信息。但是,我不能为我的生活弄清楚如何将当前目录传递给脚本!我尝试将以下所有内容添加到我的.tmux.conf中:

1

set-window-option -g status-right "#(/Users/devon/scripts/git_check.py $PWD)"

2

set-window-option -g status-right "#(/Users/devon/scripts/git_check.py #{pane_current_path)"

3。 (在修改我的脚本以从$TMUX_PATH环境变量中获取其输入后)

setenv -g TMUX_PATH = "$PWD"
set-window-option -g status-right "#(/Users/devon/scripts/git_check.py)"

我甚至尝试在$PROMPT_COMMAND中将'export TMUX_PATH=$PWD'设置为.profile,但这一切都是徒劳的。什么是正确的方法?

3 个答案:

答案 0 :(得分:0)

我想出了一种(有点hacky)方法。我把它插入我的.profile:

[[ -n $TMUX ]] && PROMPT_COMMAND='tmux setenv -g TMUX_PATH "$PWD";tmux refresh-client -S;'

每当出现新的bash提示时,这会将tmux的TMUX_PATH环境变量设置为当前路径。然后我可以从脚本中读取环境变量。 (此命令还刷新状态行 - 删除tmux refresh-client -s;部分以禁用该状态。)

我非常确定问题是tmux是从加载它的shell中运行我的脚本,这意味着我的tmux会话中的环境变量无法从我的脚本中读取。所以我需要将本地环境变量导出到tmux之外的shell,然后我可以在我的脚本中使用它来获取tmux中的当前路径。

答案 1 :(得分:0)

#(cd ..; pwd) #(pwd)中,cd仅更改第一个命令的密码。

答案 2 :(得分:0)

# vim ~/.tmux.conf

# Get current working directory for outside program: use $TMUX_WORKING_DIR to get the active dir path of tmux
set-hook -g pane-focus-in 'if [ -z ${TMUX+x} ]; then eval "export $(tmux show-environment TMUX_WORKING_DIR)"; else tmux setenv TMUX_WORKING_DIR $(pwd); fi'
# vim ~/.bashrc

if [ -z ${TMUX+x} ]; then eval "export $(tmux show-environment TMUX_WORKING_DIR)" && cd $TMUX_WORKING_DIR; else tmux setenv TMUX_WORKING_DIR $(pwd); fi
clear
<块引用>

https://yingshaoxo.blogspot.com/2021/05/how-to-enhance-ability-of-tmux.html