gpt4 book ai didi

bash - 将 bash $$ 值保存在变量中

转载 作者:行者123 更新时间:2023-11-29 09:29:25 25 4
gpt4 key购买 nike

我设置了我的终端,这样当我打开一个终端时,它会附加到一个 tmux 组 session 并创建一个新窗口;主 session 在所有终端之间共享,但每个终端都有一个干净的窗口来处理。

我想用其中运行的 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 $$)"

没有运气。

我确信有一个简单的解决方案,我只是无法将谷歌搜索与正确的关键字放在一起。

最佳答案

使用PPID代替$$,或者为其设置ID:

export ID=$PPID

在 bash 和 zsh 中工作

关于bash - 将 bash $$ 值保存在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47036615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com