요약

요약

요약

새 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"

답변1

이는 Bash 초기화 파일과 관련이 있습니다. 기본적으로 ~/.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다음과 같은 로딩 요구 사항을 변경하는 것입니다 .대화형 전용, 이는 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~/.profilesource ~/.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또는 기본 위치 인 에서 시스템 전체 구성으로 만듭니다 .

관련 정보