这个问题将非常简单,但我需要知道这如何在一侧工作但在其他地方则不然,要在 tmux 关闭时结束 ssh 会话,我使用了此链接中提出的答案:https://stackoverflow.com/a/17465215
我在 /etc/zsh/zprofile 中放置了类似的代码并且它可以工作,但是如果我在 /etc/profile 中放置相同的代码,tmux 会话在 ssh 登录后立即结束,发生了什么?
PS:有问题的代码是这样的:
if [[ -z $TMUX && -n $SSH_TTY ]]; then
exec tmux -2 new-session -s $TTY
fi
答案1
您的语法不是有效的 shell。 &&
连接两个不同且独立的 shell 命令,并且不能在test
, [
or[[
命令中使用。某些版本的测试提供-a
并-o
用于和和或者,有些则不然。
此外,/etc/profile
(以及.d
目录,如果您的发行版有的话)必须能够由任何 POSIX shell 运行。因此,[[
POSIX 中没有的 ,在 POSIX 中是不可接受的,/etc/profile
并且可能会破坏事物。
如果你想以 POSIX 兼容的方式编写/etc/profile
,你可以这样写:
if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ]; then
exec tmux -2 new-session -s "$TTY"
fi