2013-08-14 4 views
3

화면에서 tmux로 이동하려고합니다 (byobu에서 tmux를 사용하기 위해). 그러나 환경 변수가 적용되지 않는 심각한 문제, 특히 PS1이 있습니다. 그 중 아무 것도 세션 (또는 창) 환경으로 복사되지 않습니다. 실제로 내가tmux - 세션에 환경 변수가 표시되지 않습니다.

:show-environment -g 

을 내 모든 권리 변수를 볼 수 있습니다, 그러나

How do I start tmux with my current environment?

그러나 그들 중 누구도 세션 환경 이월되지 얻을 : 나는 관련 듯이 스레드를 발견 , 그래서 할 때 아무것도 볼 수 없다.

:show-environment 

나는 오른쪽이있다내 ~/.tmuxrc 파일문 :

# start a non-login shell by default for each new window 
set -g default-command 'bash' 

# Prefix is C-a like in screen 
unbind C-b 
set -g prefix C-a 

# Carry over the PS1 
set-option -ga update-environment "PS1" 

는 솔직히,이 모두가 나에게 엉망처럼 보인다. 나는 각 스크린을위한 깨끗한 세션에서 시작하는 것의 이점을 볼 수 있지만, 대부분이 고통처럼 보입니다. 파이썬 virtualenvwrapper 함수처럼 하위 프로세스에서 사용할 변수를 내보내고 사용할 수있을 것으로 기대합니다.

이 동작을 비활성화하는 방법이 있습니까? 그렇지 않다면 PS1 변수를 tmux로 가져 오려면 어떻게해야합니까?

편집 2013년 11월 13일

나는 첫 번째 줄을 제거하면 (default-command bash) 는 모든 환경 변수를 통해 캐리을한다는 것을 깨달았다. 그러나, 나는 정말로 tmux의 각각의 새 화면이 로그인 쉘로 시작하는 것을 원하지 않습니다. 예를 들어, 로그인 셸에서 PS1 변수를 명시 적으로 선언 했으므로 새 화면을 열 때마다 덮어 쓰지 않습니다. 다음 게시물에 기반

, TMUX의 모든 새 화면은 비 로그인 쉘로 시작해야합니다 https://superuser.com/questions/614277/profile-and-bash-profile-ignored-when-starting-tmux-from-bashrc

는 왜 나를 위해 기본적으로 일이되지 않는 이유는 무엇입니까?

답변

6

Tmux는 실행중인 프로세스 (예 : bash)를 업데이트 할 수 없으며 자체 환경 만 업데이트 할 수 있습니다. 새로운 창/창을 시작하려면 새로운 환경을 선택하십시오. 나의 제안은 다음과 같이 유틸리티 기능을 사용하는 것입니다 :

#!/bin/bash 

tmup() 
{ 
    echo -n "Updating to latest tmux environment..."; 
    export IFS=","; 
    for line in $(tmux showenv -t $(tmux display -p "#S") | tr "\n" ","); 
    do 
     if [[ $line == -* ]]; then 
      unset $(echo $line | cut -c2-); 
     else 
      export $line; 
     fi; 
    done; 
    unset IFS; 
    echo "Done" 
} 

이 TMUX에 대해 배운 쉘을 업데이트 한 모든 업데이트 된 환경을 통해 이동합니다.

+0

답변 해 주셔서 감사합니다. 나는 tmux가 실행중인 프로세스의 env 변수를 업데이트 할 수 없다는 것을 알고 있지만 이것이 내가 원하는 것은 아니다. 새롭게 열린 창과 창문에는 tmux가 시작될 때와 똑같은 변수 세트가 있어야합니다. 이것은 화면의 기본 동작 인 것처럼 보이지만 tmux에서 에뮬레이트하는 것이 왜 그렇게 어려운지 아직 알지 못합니다. – user1496984

+0

아, 미안하다. 확실하게 당신이 원하는 것은 업데이트 환경에서 모든 것을 제거함으로써 성취 할 수 있습니다. 'set-option'에서'-a'를 사용해서는 안되며,'update-environment'에 추가 할 것이기 때문입니다. – sjbx

+0

포인터를 다시 보내 주셔서 감사합니다! 나는 몇 가지 새로운 발견으로 질문을 업데이트했다. 환경 변수를 사용하여 문제를 일으키는 첫 번째 줄이었습니다.그러나 그 라인이 없으면 tmux의 새로운 각 화면이 어떤 이유로 로그인 쉘을 시작합니다. 그리고 나는 어떻게이 행동을 바꾸는 지 모르겠다. – user1496984

관련 문제