2017-10-31 13 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 (창 제목으로)과 같은 두 개의 다른 숫자로 끝납니다.

다음은 저의 원래 질문입니다. 다소 혼란 스러웠습니다. 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 수색을 조립하는 것처럼 보일 수 없다. 사용 PPID 대신 $$가, 또는 그것에 ID을 설정

+0

는'ID는 = $$'문자열 값을 할당 할 것이다, 그 의심 이유가 없다. 새로 시작된 bash 쉘이 원래의 bash 쉘과 동일한 pid를 가질 것이라고 가정하고 있습니까? 이것은 사실이 아니며 tmux가 그 사이에 올 때 일어날 수있는 일이 아닙니다. –

+0

@thatotherguy가 말했듯이'ID = $$'는 ID에 pid의 문자열 값을 설정하므로 문제는 시작 스크립트 또는 tmux 구성의 어딘가에 있어야합니다. 아마도'ID'는 예기치 않게 변경되거나 어딘가에 설정되었을 것입니다. 터미널 창과 초기 tmux 세션을 어떻게 시작했는지 정확히 알지 못합니다. [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (https://stackoverflow.com/help/mcve)을 참조하십시오 –

+0

최소 예제 – Maldus

답변

2

: 배쉬와 zsh을에서

export ID=$PPID 

작품

+0

을 사용하여 질문을 편집했습니다. 제 경우에는 같은 방식으로 작동합니다 ... – Maldus

+0

무엇이 동일한 방식으로 작동합니까? –

+0

bash와 tmux 창에는 질문의 예와 같이 두 개의 서로 다른 pid가 있습니다. – Maldus