ssh后别名定义多个命令

时间:2013-05-11 17:47:09

标签: linux bash ssh alias .profile

我每天多次登录和退出远程计算机(通过ssh),我想缩短整个程序。我在.bashrc和.profile中添加了一个别名,如下所示:

alias connect='ssh -XC username@remotemachine && cd /far/away/location/that/takes/time/to/get/to/;'

我的问题是,当我写连接时,我首先到达原因中的位置(在我的本地机器上)然后进行ssh连接。怎么会这样?我认为通过使用“&&”第二个命令只有在第一个命令成功后才会运行。 ssh命令成功后,在成功执行别名的第二部分之前,会重新加载.profile / .bashrc吗?

2 个答案:

答案 0 :(得分:2)

具体来说,对于ssh,您正在寻找以下内容:

ssh -t username@remotemachine "cd /path/you/want ; bash"

使用“&&”甚至 ”;”通常会执行你当前所在的shell中的命令。就像你编程并进行函数调用然后有另一行你想要影响函数中发生的事情 - 它不起作用,因为它基本上处于不同的范围。

答案 1 :(得分:-3)

对于命令序列:

试试这个(使用;):

alias cmd='command1;command2;command3;'

使用'&&'代替 ';' - 和&&如果前一个命令返回成功,则只执行后续命令。