如果当前工作目录位于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
,但这一切都是徒劳的。什么是正确的方法?
答案 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