私は自分の端末を開いてtmuxグループのセッションに接続して新しいウィンドウを作成するように設定しました。メインセッションはすべての端末間で共有されますが、すべての端末で作業するためのきれいなウィンドウが得られます。
このウィンドウには、実行中のbashのプロセスIDを指定します。 は基本的に、私は、スクリプト
MYPIDVAR=$$
export PS1="[\[email protected]${MYPIDVAR} \W]\$ "
[[ ! $TERM =~ screen ]] && exec tmux new-session -s test \; new-window -n ${MYPIDVAR}
を実行して、私のコマンドプロンプトとtmuxは、ウィンドウのタイトルの両方が同じであることを期待しています。しかし、5575(bashプロンプトで)と5566(ウィンドウタイトルとして)のように、2つの異なる数字になります。
以下は私の元々の質問ですが、少し混乱しました。私はtmuxのウィンドウのタイトルが終わるしかしID
がスクリプト
ID=$$
の先頭に$$
に設定されている
exec tmux -2 new-session -t main \; new-window -n $ID \; set-option destroy-unattached
のコマンドを実行し、そうするには
bash pidとは異なります。ここでは、ウィンドウのタイトルは、2187
[[email protected] ~]$ echo $$
2166
[[email protected] ~]$ 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のを開始するのではなく、以前から格納された値2166を持つ子プロセスのpidとして解釈されることが表示されます。 私が今必要とするのは、文字列の値を$$から出力するのではなく、スクリプト全体に即座に置き換えることです。私は以下を試しました:
ID=`echo $$`
ID="$$"
ID='$$'
ID="$(echo $$)"
運がありません。
私は確かにこれに簡単な解決策があります、私はちょうど適切なキーワードでGoogle検索をまとめるように見えることはできません。
で
作品は 'IDは= $$'文字列値を割り当てます、それを疑うも意味がありません。新しく起動したbashシェルに元のbashシェルと同じpidがあると仮定していますか?これは真実ではなく、tmuxがその間に来るときに起こることではありません。 –
@thatotherguyによると、 'ID = $$'はIDにpidの文字列値を設定するので、問題は起動スクリプトやtmux設定のどこかにある必要があります。おそらく 'ID'は予期せずにどこかで変更または設定されています。あなたが共有してきたことから、あなたの端末ウィンドウと初期のtmuxセッションをどうやって起動するのかは明らかではありません。 [最小限の完全かつ検証可能なサンプルを作成する方法](https://stackoverflow.com/help/mcve) –
最小の例 – Maldus