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

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



답변

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

. ~/.bashrc

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

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

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


답변

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

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


답변

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

이것은 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 사용자가 프로필에 이것을 설정하는 것이 좋습니다.

참고 문헌


답변

이 스레드에서 :

사용 .bash_profile하면 작동 하는 것 같습니다 .


답변

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

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

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


답변

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

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

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


답변