我设置了终端,使得打开一个终端会附加到一个tmux组会话并创建一个新窗口;主会话在所有终端之间共享,但每个终端都有一个干净的窗口可供使用。
我想用bash进程的进程ID来命名这个窗口。基本上,我运行以下脚本:
我希望我的命令提示符和tmux窗口标题都是相同的,但是最终我得到了两个不同的数字,例如在bash提示符上是5575,在窗口标题上是5566。
我想用bash进程的进程ID来命名这个窗口。基本上,我运行以下脚本:
MYPIDVAR=$$
export PS1="[\u@${MYPIDVAR} \W]\$ "
[[ ! $TERM =~ screen ]] && exec tmux new-session -s test \; new-window -n ${MYPIDVAR}
我希望我的命令提示符和tmux窗口标题都是相同的,但是最终我得到了两个不同的数字,例如在bash提示符上是5575,在窗口标题上是5566。
以下是我的原始问题,有点混乱。
为此,我运行以下命令:
exec tmux -2 new-session -t main \; new-window -n $ID \; set-option destroy-unattached
在脚本开头处,将ID
设置为$$
ID=$$
然而,在tmux中窗口的标题与bash进程ID不同。在这里,窗口标题是2187。
[maldus@2166 ~]$ echo $$
2166
[maldus@2166 ~]$ ps aux | grep 2156
maldus 2156 0.0 0.0 26564 4032 pts/0 Ss+ 14:20 0:00 tmux -2 new-session -t main ; new-window -n 2156 ; set-option destroy-unattached
maldus 2164 0.0 0.0 35280 4000 ? Ss 14:20 0:00 tmux -2 new-session -t main ; new-window -n 2156 ; set-option destroy-unattached
maldus 2187 0.0 0.0 10884 2288 pts/2 S+ 14:20 0:00 grep 2156
看起来$ID
被解析为$$
,并被解释为启动tmux的子进程的pid,而不是之前存储的值2166。
此时我需要保存从$$输出的字符串值,而不是立即将其替换整个脚本。我尝试了以下操作:
ID=`echo $$`
ID="$$"
ID='$$'
ID="$(echo $$)"
很遗憾,我没有找到相关资料。
我相信这个问题有一个简单的解决方案,只是我似乎无法用正确的关键词进行谷歌搜索。
ID=$$
将会赋予字符串值,这一点毫无疑问。你是否假设新启动的bash shell将具有与原始bash shell相同的pid?这是不正确的,并且在tmux介入时也无法实现。 - that other guy