ssh with command失去tab-completion

时间:2015-04-23 09:12:21

标签: ssh tabs completion

我有一个方便的别名如下:

sshpass -p "the_password" ssh -o StrictHostKeyChecking=no root@192.168.0.123

这将为我提供一种快速登录远程设备的方法,并获得一个包含标签的命令提示符。

但我接下来要做的第一件事就是cd到另一个目录。因此,我想将其作为命令添加到行尾,如下所示:

sshpass -p "the_password" ssh -o StrictHostKeyChecking=no root@192.168.0.123 'cd /tmp/Data/fx'

但如果我这样做,那么我根本就没有得到提示!它只是坐在那里什么都不做。接下来,我试着让它给我一个命令提示符,使用它:

sshpass -p "the_password" ssh -o StrictHostKeyChecking=no root@192.168.0.123 'cd /tmp/Data/fx; /bin/bash -i'

这几乎有效。

我已更改到正确的目录,并且我有一个命令提示符。但是,我没有任何制表符完成,向上箭头没有显示最新的命令。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

ssh -o [...] 'cd /tmp/Data/fx; /bin/bash -i'

当您要求ssh在远程系统上运行命令时,ssh通常不会为远程会话分配PTY(伪TTY)。没有TTY会改变bash初始化自身的方式,因此不会启用其行编辑功能。您可以使用-t运行ssh来请求会话的tty:

ssh -t -o [...] 'cd /tmp/Data/fx; /bin/bash -i'

如果您不想一直输入,可以将此行添加到" .ssh / config"您当地主持人的文件:

RequestTTY yes