새로운 tmux 세션은 bashrc 파일을 소스하지 않습니다


17

요약

새 tmux 세션을 만들 때 프롬프트가 기본 bash 구성에서 가져오고 source ~/.bashrc사용자 정의 프롬프트에 대해 수동으로 실행해야 합니다.

분석

RHEL 7 컴퓨터를 사용하고 있습니다. 나는 bash 업데이트 후에이 동작을 알아 차리기 시작했지만 지금까지 질문을하지는 않았다.

예를 들어 프롬프트를 다음과 같이 사용자 정의했습니다.

[user@hostname ~]$

새로운 tmux 세션을 시작할 때마다 bash 기본값으로 보이는 것을 사용합니다.

-sh-4.2$

빠른 실행은 source ~/.bashrc항상 문제를 해결하지만 작은 것을 고치려고 할 때 마다이 작업을 수행해야한다는 것은 성가신 일입니다. tmux가 자동으로 다시 수행하도록하는 방법에 대한 아이디어가 있습니까?

더 이상의 정보가 필요하면 기꺼이 제공해드립니다.

tmux.conf

참고로 tmux.conf사용자 정의라고 할 수는 없지만 아래 파일이 있습니다.

setw -g mode-keys vi

# reload tmux.conf
bind r source-file ~/.tmux.conf \; display-message " ✱ ~/.tmux.conf is reloaded"

답변:


19

내가 아는 한 기본적 tmux으로 로그인 쉘이 실행됩니다. 때 bash대화 형 로그인 셸 호출, 그것은을 찾습니다 ~/.bash_profile, ~/.bash_login그리고 ~/.profile. 따라서 source ~/.bashrc해당 파일 중 하나 를 넣어야 합니다.

이 문제를 해결하는 또 다른 방법은 파일에 .tmux.conf다음 줄 을 넣는 것입니다 .

set-option -g default-shell "/bin/bash"

1
source ~/.bashrc줄을 추가하고 .bash_profile로그 아웃했다가 다시 시도한 후 새로운 tmux 세션을 만들었지 만 변경하지 않았습니다. 어떤 아이디어?
Justin W. Flory

1
파일 .tmux.conf에 줄 을 넣으십시오 set-option -g default-shell "/bin/bash". 이것은 당신의 문제를 해결해야합니다 (적어도 나는 그렇게 희망합니다)!
andreatsh

내 TMUX 구성을 다시로드 한 후 문제가 해결되었습니다! 답변을 수정하거나 새로 작성 하시겠습니까? 승인 된 것으로 표시하겠습니다. :)
Justin W. Flory

당신은 친절합니다, 나는 빨리 대답을 수정했습니다!
andreatsh

2
macOS 사용자를위한 참고 사항 : bashHomebrew를 통해 설치 했지만 작동하지 않는 경우로 변경 "/bin/bash"하십시오 "/usr/local/bin/bash".

5

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

참고 문헌


2

다음에 추가 .tmux.conf:

set-option -g default-shell "/bin/bash"

원하는 결과를 얻지 못합니다 .

의도 한 결과에 추가 source "$HOME/.bashrc"할 때만 가능합니다 ~/.bash_profile.

새 창이나 창을 열 때와 새로운 tmux 세션을 분리하고 열 때 활성 tmux 세션에서 작동합니다.

에 테스트 :

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