매번 항상 tmux를 입력 해야하는 대신 기본 bash 셸을 tmux로 바로 가져 가고 싶습니다.
답변
이것은 작동하는 것 같습니다 …
https://wiki.archlinux.org/index.php/Tmux#Start_tmux_on_every_shell_login
별칭 앞에 .bashrc에 다음 bash 코드 행을 추가하십시오. 다른 쉘의 코드는 매우 유사합니다.
[[ $TERM != "screen" ]] && exec tmux
답변
@StarNamer의 대답은 일반적으로 정확하지만 (1) tmux가 시스템에 존재하고 (2) 대화식 쉘에 있고 (3) tmux가 내부에서 실행되지 않도록하기 위해 일반적으로 다음 테스트를 포함합니다 그 자체:
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
답변
같은 줄 추가
[ -z "$TMUX" ] && { tmux attach || exec tmux new-session && exit;}
bashrc 파일에서 아마 일을 할 것입니다. tmux를 분리하거나 종료하면이 행은 ssh를 종료하고 연결을 종료합니다. 키 스트로크를 저장하여 연결을 종료 하므로이 구성이 마음에 듭니다. 그러나 이것이 마음에 들지 않으면 (아마도 가능성이 없다고 생각합니다) 종료 후 로그인 쉘에 남아 있으려면 exit
부분을 제거하십시오 .
[ -z "$TMUX" ] && { tmux attach || exec tmux new-session;}
또한 당신은 포장 안주의 tmux attach
에 exec
부착 할 TMUX 세션이없는 경우이 연결이 종료되는 원인 것처럼.
답변
chsh
로그인 쉘을 변경하는 명령이 있습니다 . 문의하십시오 man chsh
.
답변
나는 성공적으로 사용하고 있습니다
case $- in *i*)
[ -z "$TMUX" ] && exec tmux
esac
내 .zshrc
. bash를 사용하는 경우 .bashrc
대신 bash를 넣으십시오 .
또한 tmux
기본 쉘 ( chsh -s $(which tmux)
) 로 설정 을 시도했지만 SSH를 통한 직접 명령 실행을 중단하는 것처럼 보입니다. 예를 들어 ssh $some_server echo foo
출력이 생성되지 않습니다.
답변
답변
위의 응답 중 어느 것도 나를 위해 일 exec tmux
하지 않았습니다 – 쉘을 종료하지 않고 tmux를 닫지 못하게합니다 ( Ctrl
+ T
또는 응용 프로그램 메뉴에서 열 었는지 여부 ).
Linux Mint를 사용하면 특정 단축키를 명령에 매핑 할 수 있으며 (일부 경우와 같이 코셔 해제 할 수 있습니다.) 명령을 시작하는 bash 쉘이 있습니다. 예를 들어 Win
+ Alt
+ B
는 일종의 복잡한 bash -exec(vim)
문장을 수행합니다. 내 .bashrc를 편집하면 일반 쉘처럼 작동합니다.
위의 내용을 my 맨 위에 배치 한 후 해당 상황에서 vim이 아닌 tmux 가로 드되었습니다 .bashrc
. tmux 실행 라인을 다른 if 문에 래핑하여 대화 형 모드에서 실행되고 있는지 확인했습니다.
if command -v tmux>/dev/null; then
if [ ! -z "$PS1" ]; then # unless shell not loaded interactively, run tmux
[[ ! $TERM =~ screen ]] && [ -z $TMUX ] && tmux
fi
fi
모든 것을 한 줄로 감쌀 수는 있지만 가독성을 위해 괜찮습니다.