在bash脚本

时间:2016-06-02 07:57:45

标签: linux bash

我想为工作区配置创建一个脚本,我需要它来打开一个ssh终端,在里面我需要抛出一个" bash"命令(因为默认是tcsh)和over bash,抛出另一个命令,我希望终端保持最后状态。

我在剧本中有这个:

...
cd xxx/xxx
bash
source setup.sh
...
exit 0

当脚本结束时,我的终端保持bash,但没有执行下一步。

我该怎么做?有谁有想法?谢谢你提前。

现在我这样做:

ssh -X URL << '___' 
   cd xxx/xxx
   bash -c "source setup.sh"
___

如果我只启动bash -c,在ssh URL中,它可以工作,但是如果我完成它,它会结束执行并将我放到ssh URL之外。如果我在最后做了bash -i,它说&#34; bash:在这个shell中没有工作控制&#34;把我抛弃-exec选项也是如此。

任何人都能看到我做错了什么?

3 个答案:

答案 0 :(得分:2)

您可以在标准输入上将任意复杂的脚本传递给bash

bash <<'____'
    source setup.sh
    : things
    # no explicit exit really needed
____

答案 1 :(得分:0)

我要做的是将bash行与exit 0之间的命令放入单独的文件中,例如mycommands.sh

#!/bin/bash
source setup.sh
...
exit 0

chmod +x mycommands.sh

然后进行invode     mycommands.sh 在你写bash的时候

但你也可以

bash -c "source setup.sh;    ... ;   exit 0"

答案 2 :(得分:0)

将“#!/ bin / bash”放在“setup.sh”的标题上。

这将使该脚本在Bash shell下运行。