4

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

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

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

4

2 回答 2

2

对于 ssh,您正在寻找以下内容:

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

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

于 2013-05-11T19:00:45.497 回答
-3

对于命令序列:

试试这个(使用;):

alias cmd='command1;command2;command3;'

使用 '&&' 代替 ';' - && 使其仅在前一个返回成功的情况下执行后续命令。

于 2013-05-11T18:55:50.757 回答