2013-05-11 70 views
3

我每天多次登录和退出远程机器(通过ssh),我想缩短整个过程。我在我的.bashrc添加一个别名,.profile文件看起来像:ssh之后的多个命令的别名定义

alias connect='ssh -XC [email protected] && cd /far/away/location/that/takes/time/to/get/to/;' 

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

回答

2

为SSH明确,你看以下:

ssh -t [email protected] "cd /path/you/want ; bash" 

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

+0

谢谢,我已经尝试添加-t选项ssh如: '别名cmd ='ssh -tXC用户名@主机“cd /位置/; bash”''' 它似乎现在工作! 这只是.bashrc以某种方式加载了两次;在该文件的末尾添加一行: echo“.bashrc loaded” 在通过ssh连接到该远程计算机之后提供了两条这样的消息。我想这应该不会产生任何麻烦。 – mannaroth 2013-05-11 19:09:18

-3

有关命令的序列:

尝试此(使用):

alias cmd='command1;command2;command3;' 

使用的 '& &' 而不是 ';' - & &仅在前一次返回成功时才执行后续命令。

+0

我实际上已经尝试过(“;”),但它没有奏效。然后我推测,也许我应该让“cd”命令只有在成功确认ssh(“&&”)连接后才能运行。 – mannaroth 2013-05-11 19:01:49