然后SSH改变Shell

use*_*875 17 ssh bash solaris csh login

可能是一个真正容易的问题,但我想知道是否有人可以提供一些建议.

为了完成重复任务,我将使用从系统管理员处获得的凭据不断登录到远程Solaris服务器.但是,每次登录时,我必须更改shell(来自csh - > bash),因为必须使用BASH运行特定任务.

虽然这不是一个主要的问题,但我觉得改变bash shell有点单调乏味,因为我必须每天重复几次这个任务,偶尔可能会忘记在运行任务之前更换shell等等(我也更喜欢BASH)所以).

有没有办法我可以在一行中ssh并更改默认shell,这样我就可以立即启动我想要的远程服务器上的脚本?注意,我不知道要更改任何登录文件(如.login或.cshrc)的内容,因为远程服务器和凭据是共享的,并非专门针对我.我不想在服务器上更改默认shell,因为服务器和凭据也被多人使用.

有人会有任何想法如何摆脱这样的问题?任何建议将不胜感激.

Beg*_*man 29

SSH通常会执行您将其作为参数传递的命令,然后断开连接.您需要设置三个选项才能使交互式会话正常工作:

  • ssh -t 将强制您进行必要的伪tty分配,以便与您要求SSH运行的远程命令进行交互
  • bash -l 将启动一个交互式登录shell
  • csh -l -c 将在csh中启动交互式登录shell,然后执行以下命令

要启动另一个shell(即,您的默认值是csh,并且您想要启动bash):

ssh -t <user>@<server> "bash -l"
Run Code Online (Sandbox Code Playgroud)

要首先获取csh环境,我们启动交互式shell,然后传递命令切换到bash:

ssh -t <user>@<server> 'csh -l -c "bash"'
Run Code Online (Sandbox Code Playgroud)

  • @cjohansson,我相信您在ssh_config中寻找的是RemoteCommand选项。 (2认同)