是否可以在 ssh 登录时指定不同的 zshrc 文件?

是否可以在 ssh 登录时指定不同的 zshrc 文件?

我花了一整天的时间通过 ssh 连接到工作服务器,并且远程用户是由我和几个同事共享的,因此我不能盲目地定制 shell,因为不是每个人都想要我的调整和更改。

是否有办法指定登录时使用的备用 .zshrc 文件,例如:

ssh user@someserver zsh --rcfile .zshrc.mine

我查看了手册页并在 Google 上搜索过,但到目前为止还没有找到解决方案。

任何帮助,将不胜感激 :-)

答案1

为了更改zsh查找用户配置文件(.zshenv.zprofile.zshrc.zlogin)的位置,您必须将ZDOTDIR环境变量设置为它们所在的路径。ZDOTDIR可能包含绝对路径或相对路径,其中相对路径是相对于启动时的当前工作目录zsh。 如果ZDOTDIR未设置,zsh则在 中查找$HOME

因此,如果您将个人资料.zshrc放入目录中$HOME/.my_zsh,您应该能够通过以下命令连接在远程服务器上使用它:

ssh -t user@someserver ZDOTDIR=.my_zsh zsh

该参数-t强制伪 tty 分配,ssh通常仅在未传递任何命令时(即打开远程 shell)才会执行。在这种情况下,ZDOTDIR=.my_zsh zsh将传递命令,该命令将设置ZDOTDIR(仅限于当前命令)并运行zsh

答案2

您的 .ssh 会话定义了 3 个环境变量:

  SSH_CLIENT=127.0.0.1 42421 22  
  SSH_CONNECTION=127.0.0.1 42421 127.0.0.1 22  
  SSH_TTY=/dev/pts/3  

“=”后面的值可能会有所不同。

您可以让您的.zshrc文件检查它们,并做一些不同的事情。

相关内容