.bashrc / .profile이 새 tmux 세션 (또는 창)에로드되지 않는 이유는 무엇입니까?


94

tmux가 시작되거나 새 창을 열 때 my .profile또는 .bashrc. 나는 . ~/.bashrc매번 타이핑을 한다. 이 작업을 자동으로 수행 할 수있는 방법이 있습니까?

답변:


146

예, 끝에 .bash_profile다음 줄을 입력하십시오.

. ~/.bashrc

이것은 일반적으로 프로파일 만 처리하는 상황에서 rc 파일을 자동으로 소스합니다.

bash특정 파일이 실행 되는시기에 관한 규칙 은 복잡하며 명령 줄 인수 및 환경 변수와 함께 시작되는 셸 유형 (로그인 / 비 로그인, 대화 형 여부 등)에 따라 다릅니다.

man bash출력 에서 볼 수 있습니다. 찾아보세요. INVOCATION요약하고 디코딩하는 데 약간의 시간이 필요할 것입니다. :-)


2
이 솔루션의 문제점은 일부 시스템에서 .bashrc가 .bash_profile을 호출한다는 것입니다.
Honza

1
직접 수정 해 보겠습니다. 시스템에는 .bash_profile을 호출하는 .bashrc가 없지만 직접 수행하고 있지 않은지 확인해야합니다.
Honza

1
@Honza, 거의 항상 그 반대이기 때문에 가장 특이한 설정입니다. 사람은 확실히 그렇게 할 준비 수도 있지만 우리는 그들의 정신을 :-) 질문해야 할 것
paxdiablo

2
사실, 내가 그렇게하기로 결정했다는 것이 밝혀졌다 (그리고 잊어 버렸다). 당신이있는 거 환영 ... 내 정신을 질문)
Honza

3
내가 문제라고 생각 ....bashrc/.profile is not loaded on new tmux session (or window) — why?
dylnmc

16

bash를 실행하면 ~ / .tmux.conf 파일에 다음 줄을 추가하여 명시 적으로 도움이되었습니다.

set-option -g default-command "exec /bin/bash"

1
이것은 나를 위해 일했습니다! 그러나 "exec"부분은 필요하지 않습니다. 다음 줄을 내 ~/.tmux.conf : set -g default-command "/bin/bash". 고마워 친구.
조커

하지만 왜 이런 일이 일어나는지 아십니까? 우분투 16.04에서 18.04.2로 업그레이드 한 후 갑자기 이것을 발견했습니다. 이것이 제가 생각할 수있는 유일한 차이점입니다. 또한 일부 구성이 깨져서 몇 가지 새로운 구문을 준수해야한다는 것을 알게되었습니다 (tmux도 업데이트 된 것처럼 보이지만 이전에 확인하는 데 사용한 tmux 버전이 기억 나지 않습니다).
조커

6

이전 답변은 해결책을 제공했지만 이유를 설명하지 않았습니다. 여기있어.

이것은 Bash init 파일과 관련이 있습니다. 기본적으로 ~/.bashrc대화식 비 로그인 셸에서 사용됩니다. 로그인 셸에서 제공되지 않습니다. Tmux는 기본적으로 로그인 셸 을 사용합니다 . 따라서 tmux skip에 의해 시작된 쉘은 ~/.bashrc.

default-command 쉘 명령

기본값은 옵션 값을 사용하여 로그인 셸을 만들도록 tmux에 지시 하는 빈 문자열 default-shell입니다.

Bash 용 초기화 파일,

  1. 로그인 모드 :
    1. /etc/profile
    2. ~/.bash_profile, ~/.bash_login, ~/.profile(존재하는 경우에만 제 한)
  2. 대화 형 비 로그인 :
    1. /etc/bash.bashrc (일부 Linux, Mac OS X 제외)
    2. ~/.bashrc
  3. 비대화 형 :
    1. 소스 파일 $BASH_ENV

이상한 대화 형 비 로그인로드 요구 사항은 다른 상황에서도 사람들을 혼란스럽게합니다. 최상의 솔루션 의 로딩 요구 사항을 변경하는 ~/.bashrc등의 경우에만 대화 형 정확히 우분투 같은 일부 배포판,하고있는 일이다.

# write content below into ~/.profile, or ~/.bash_profile

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

이것이 여러분이 원하는 솔루션이어야합니다. 그리고 모든 Bash 사용자가 프로필에 이것을 설정하는 것이 좋습니다.

참고 문헌



1

나를 위해 일한 솔루션은 다음과 같습니다.

  • .bash_profile파일이없는 경우 파일을 만듭니다.~
  • 의 끝에 .bash_profile넣어 source ~/.bashrc또는source ~/.profile
  • tmux를 다시 시작하십시오.

이제 문제가 해결되어야합니다.


0

나는 똑같은 문제가 있었고 지금까지의 해결책은 나를 위해 작동하지 않았습니다. 나를 위해 일하게 된 해결책은 여기 에서 찾을 수 있습니다 .

간단히 말해서, tmux창 / 세션 ~/.profile은 시작될 때 다른 파일 을 찾는 로그인 쉘을 사용 합니다.

내가 원하는 것은 각각의 새로운 시작 zsh을 가지고 있었다 tmux내가 넣어 있도록 창 exec zsh내 하단에 ~/.profile.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.