![tmux를 시작하기 위해 기본 쉘을 설정하는 방법](https://linux55.com/image/24244/tmux%EB%A5%BC%20%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20%EA%B8%B0%EB%B3%B8%20%EC%89%98%EC%9D%84%20%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
나는 매번 tmux를 입력하는 대신 기본 bash 쉘이 tmux를 직접 입력할 수 있기를 원합니다.
답변1
@StarNamer의 답변일반적으로 정확하지만 일반적으로 확인하기 위해 다음 테스트를 수행합니다.
tmux
시스템에 존재- 우리는 대화형 셸에 있습니다.
tmux
자체 내에서 실행을 시도하지 않습니다.
그래서 나는 이것을 다음에 추가할 것입니다 .bashrc
:
if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]] && [ -z "$TMUX" ]; then
exec tmux
fi
인용하다
- bash를 사용하여
command
명령이 존재하는지 확인하십시오.http://man7.org/linux/man-pages/man1/bash.1.html#SHELL_BUILTIN_COMMANDS - 명령이 존재하는지 확인하는
command
대신 왜 사용합니까 ?which
https://unix.stackexchange.com/a/85250 - 대화형 쉘을 확인 하려면
$PS1
-https://www.gnu.org/software/bash/manual/html_node/Is-this-Shell-Interactive_003f.html $TERM
"tmux 내에서 실행되는 모든 프로그램에 대한" 환경 변수의 예상 상태 -http://man7.org/linux/man-pages/man1/tmux.1.html#WINDOWS_AND_PANES
답변2
쉘에 로그인할 때마다 tmux를 시작하십시오., Arch wiki에서 작동하는 것 같습니다. .bashrc
별칭 앞에 다음 bash 줄을 추가하면 됩니다 . 다른 쉘의 코드도 매우 유사합니다.
[[ $TERM != "screen" ]] && exec tmux
답변3
다음과 같은 줄을 추가하십시오.
[ -z "$TMUX" ] && { tmux attach || exec tmux new-session && exit;}
bashrc 파일에서 작업을 수행할 수 있습니다. 이 줄은 tmux를 분리하거나 종료하면 ssh를 종료하고 연결을 종료합니다. 연결을 종료하는 키 입력을 저장하기 때문에 이 구성이 마음에 듭니다. 그러나 이것이 마음에 들지 않고(내 생각에는 그럴 것 같지 않음) 종료 후에도 로그인 셸에 남아 있기를 원한다면 해당 exit
부분을 제거하기만 하면 됩니다.
[ -z "$TMUX" ] && { tmux attach || exec tmux new-session;}
또한 연결할 tmux 세션이 없을 때 연결이 닫히게 되므로 tmux attach
개행 문자를 사용하면 안 됩니다 .exec
답변4
성공적으로 사용했습니다
case $- in *i*)
[ -z "$TMUX" ] && exec tmux
esac
내 .zshrc
. Bash를 사용하는 경우 이것을 .bashrc
Bash에 넣으십시오.
tmux
또한 이를 기본 셸( )로 설정하려고 시도했는데 chsh -s $(which tmux)
SSH를 통한 직접 명령 실행이 중단되는 것 같습니다. 예를 들어 ssh $some_server echo foo
출력이 생성되지 않습니다.