일반화하다

일반화하다

일반화하다

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 초기화 파일,

  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또는 기본 위치에서 시스템 전체 구성으로 설정하세요.

관련 정보