我设置了终端,这样当我打开它时,它会附加到tmux组会话并创建一个新窗口;主会话在所有终端之间共享,但每个终端都有一个干净的窗口可供使用。
我想将此窗口命名为其中运行的bash的进程ID。 基本上,我运行脚本
MYPIDVAR=$$
export PS1="[\u@${MYPIDVAR} \W]\$ "
[[ ! $TERM =~ screen ]] && exec tmux new-session -s test \; new-window -n ${MYPIDVAR}
并期望我的命令提示符和tmux窗口标题都相同。但是我最终得到两个不同的数字,比如5575(在bash提示符下)和5566(作为窗口标题)。
以下是我原来的问题,有点太困惑了。
为此,我运行命令
exec tmux -2 new-session -t main \; new-window -n $ID \; set-option destroy-unattached
其中ID
在脚本开头设置为$$
ID=$$
然而,tmux中窗口的标题最终与bash pid不同。窗口标题是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 $$)"
没有运气。
我确信有一个简单的解决方案,我似乎无法用正确的关键字整理谷歌搜索。
答案 0 :(得分:2)
使用PPID
代替$$
,或将ID
设置为:
export ID=$PPID
适用于bash和zsh