tmux split window shell命令,在shell启动之前设置env变量

tmux split window shell命令,在shell启动之前设置env变量,shell,tmux,Shell,Tmux,在我的tmux配置中,我有一个拆分窗口命令: bind C-j split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^\"(tmux display-message -p '#S')\"\\\$\" | fzf --reverse | xargs tmux switch-client -t" 它将在一个shell会话中运行tmux手册的拆分窗口中定义的所有命令。但是,我的shell包含许多与这个定制tmux键绑

在我的tmux配置中,我有一个拆分窗口命令:

bind C-j split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^\"(tmux display-message -p '#S')\"\\\$\" | fzf --reverse | xargs tmux switch-client -t"

它将在一个shell会话中运行tmux手册的拆分窗口中定义的所有命令。但是,我的shell包含许多与这个定制tmux键绑定无关的init脚本。而且速度很慢。我可以在
拆分窗口开始shell会话之前设置一个env变量,这样我就可以跳过一些shell初始化脚本吗?

注意:现在正在使用在该tmux环境中更新的脚本。

可以在命令管道的开头设置此变量。然后,您的shell init脚本可以检查其值,并相应地像跳过初始化的某些部分一样进行操作

bind C-j set-environment TMUXSPLIT 1 \; split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^\"(tmux display-message -p '#S')\"\\\$\" | fzf --reverse | xargs tmux switch-client -t"
我假设这是在使用bash的Ubuntu下运行的。在您的bashrc中,编写如下内容:

if [ "$TMUXSPLIT" = 1 ]; then
    ...
fi

你能看看我的建议吗?@yacc对不起,我留下了评论。这是一个很好的答案。缺点是$tmuxspilt env var将出现在所有新窗格中,而不仅仅是使用
前缀+C-j
键绑定的窗格。它确实存在@BrunoSutic descript的问题。但是如果在
分割窗口
之后执行
setenv-r tmuxslit
,则应删除该env。但它有什么坏处吗?好主意。如果在
split window
之后用
set env-r
删除If,那么我认为这没有什么坏处。@Daiwai我建议在完成测试并感到满意后,用完整的解决方案发布一个答案。