이 질문은 매우 간단하지만 한쪽에서는 어떻게 작동하고 다른 쪽에서는 작동하지 않는지 알아야 합니다. tmux가 닫힐 때 ssh 세션을 종료하려면 다음 링크에 제안된 답변을 사용했습니다.https://stackoverflow.com/a/17465215
/etc/zsh/zprofile에 유사한 코드를 배치했는데 작동하지만 /etc/profile에 동일한 코드를 배치하면 ssh 로그인 직후 tmux 세션이 종료됩니다. 무슨 일이 일어나고 있습니까?
PS: 문제의 코드는 다음과 같습니다.
if [[ -z $TMUX && -n $SSH_TTY ]]; then
exec tmux -2 new-session -s $TTY
fi
답변1
귀하의 구문은 유효한 쉘이 아닙니다. 두 개의 서로 다른 독립적인 셸 명령을 연결하며 또는 명령 &&
에서는 사용할 수 없습니다 . 테스트의 일부 버전이 제공 되고 사용됩니다.test
[
[[
-a
-o
그리고그리고또는, 일부는 그렇지 않습니다.
또한 /etc/profile
( .d
배포판에 디렉터리가 있는 경우 해당 디렉터리도) 모든 POSIX 셸에서 실행 가능해야 합니다. 따라서 [[
POSIX에 없는 것은 POSIX에서 허용되지 않으며 /etc/profile
문제가 발생할 수 있습니다.
POSIX 호환 방식으로 작성하려면 /etc/profile
다음과 같이 작성할 수 있습니다.
if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ]; then
exec tmux -2 new-session -s "$TTY"
fi