连接到 ssh 并执行命令,尽管登录后更改了 shell

连接到 ssh 并执行命令,尽管登录后更改了 shell

我正在尝试通过 ssh 连接到服务器,然后执行命令。到目前为止就这么简单。

不同的是,在该服务器上,我从 bash 启动 zsh。所以在我的 .bashrc 中我有命令:

exec /bin/zsh -l

这样当我登录时,它会自动启动我的 z-shell。我想保持这样。

不幸的是,当我运行 bash 脚本来连接到服务器并运行命令时,它不起作用。没有错误消息,命令只是无限地运行。

尽管外壳发生了变化,有没有办法做到这一点?

谢谢!

答案1

我找到了解决方案。

在.bashrc中,检查shell是否处于交互模式。如果是,则打开 z shell。

if [[ $- == *i* ]]
then
    exec /bin/zsh -l
fi

这样,如果您执行连接到服务器并执行命令的 bash 脚本,z shell 将不会启动。

相关内容