일반화하다
source ~/.bashrc
새 tmux 세션을 생성하면 기본 bash 구성에서 프롬프트를 가져오고 사용자 지정 프롬프트를 수동으로 실행해야 합니다 .
분석하다
저는 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"
답변1
이는 Bash 초기화 파일과 관련이 있습니다. 기본적으로 다음 ~/.bashrc
용도로 사용됩니다.대화형, 비로그인껍데기. 로그인 쉘에서는 나오지 않습니다. Tmux 사용로그인 쉘기본적으로. 따라서 쉘은 tmux Skip 에 의해 시작됩니다 ~/.bashrc
.
default-command
쉘 명령기본값은 빈 문자열입니다.tmux에게 로그인 쉘을 생성하도록 지시합니다.옵션의 값을 사용하십시오
default-shell
.
Bash 초기화 파일,
- 로그인 방법:
/etc/profile
~/.bash_profile
,~/.bash_login
,~/.profile
(첫 번째 것만 존재함)
- 인터렉티브 로그인하지 않았습니다:
/etc/bash.bashrc
(일부 Linux; Mac OS X는 아님)~/.bashrc
- 비대화형:
- 소스 파일은 다음 위치에 있습니다.
$BASH_ENV
- 소스 파일은 다음 위치에 있습니다.
해결책
이상한 대화형, 비로그인 로딩 요구 사항은 다른 상황에서 사람들을 혼란스럽게 합니다. 이것최고의 솔루션~/.bashrc
다음과 같은 로딩 요구 사항을 변경하는 것입니다.대화형 전용, 이는 정확히 일부 배포판(예: Ubuntu)이 수행하는 작업입니다.
# 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 사용자가 자신의 구성 파일에서 이를 설정하도록 권장합니다.
고쳐 쓰다: 위 설정은 Ubuntu에서 복사되었습니다. .bashrc
대화형 쉘에 있든 없든 로그인 쉘에 로드하기로 선택한 것 같습니다 .
대화형 쉘을 감지하려면 $PS1
.
if [ -n "$BASH_VERSION" -a -n "$PS1" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
인용하다
답변2
내가 아는 한, 로그인 쉘은 기본적으로 실행됩니다 tmux
. 대화형 로그인 셸로 호출 되면 , 및 를 bash
찾습니다 . 따라서 다음 파일 중 하나를 넣어야 합니다 .~/.bash_profile
~/.bash_login
~/.profile
source ~/.bashrc
이 문제를 해결하는 또 다른 방법은 .tmux.conf
다음 줄을 파일에 넣는 것입니다.
set-option -g default-shell "/bin/bash"
답변3
다음을 추가하십시오 .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
답변4
$HOME/.tmux.conf
다음 내용으로 파일을 수정합니다.
set-option -g default-shell "/usr/bin/bash"
set-option -g default-command bash
그것은 그것을 덮어야합니다. 그 동안 도트 파일을 $HOME/.config/tmux
도트가 없는 폴더에 넣어보는 것은 어떨까요? 그리고 다음 항목에 색상 출력을 추가하고 키 바인딩을 다시 로드하세요 $HOME/.config/tmux/tmux.conf
.
set -g default-terminal "screen256color"
bind r source-file "${HOME}/.config/tmux/tmux.conf"
< 3.1 인 경우 tmux -V
별칭을 추가하여 $HOME/.bashrc
다음 위치에서 구성 파일을 로드합니다.
alias tmux="tmux -f ${HOME}/.config/tmux/tmux.conf"
/etc/tmux.conf
또는 기본 위치에서 시스템 전체 구성으로 설정하세요.