2017-10-31 3 views
3

私は自分の端末を開いて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検索をまとめるように見えることはできません。

+0

export ID=$PPID 

作品は 'IDは= $$'文字列値を割り当てます、それを疑うも意味がありません。新しく起動したbashシェルに元のbashシェルと同じpidがあると仮定していますか?これは真実ではなく、tmuxがその間に来るときに起こることではありません。 –

+0

@thatotherguyによると、 'ID = $$'はIDにpidの文字列値を設定するので、問題は起動スクリプトやtmux設定のどこかにある必要があります。おそらく 'ID'は予期せずにどこかで変更または設定されています。あなたが共有してきたことから、あなたの端末ウィンドウと初期のtmuxセッションをどうやって起動するのかは明らかではありません。 [最小限の完全かつ検証可能なサンプルを作成する方法](https://stackoverflow.com/help/mcve) –

+0

最小の例 – Maldus

答えて

2

利用PPID代わりの$$、またはそれにIDを設定します。bashとzshの

+0

を使用して質問を編集しました。私の場合は同じように動作します... – Maldus

+0

何が同じように振る舞いますか? –

+0

bashとtmuxのウィンドウには、問題の例のように2つの異なるpidがあります – Maldus

関連する問題