繁体   English   中英

在bash脚本中将命令抛出到调用的终端中

[英]Throw commands inside invoked terminal in bash script

我想为工作区配置创建脚本,我需要它来打开ssh终端,并且在其中需要抛出“ bash”命令(因为默认为tcsh)并通过bash抛出另一条命令,我想要终端保持在最后状态。

我在脚本中有这个:

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

当脚本结束时,我的终端仍停留在bash上,但未执行后续步骤。

我怎样才能做到这一点? 有人有主意吗? 提前致谢。


现在我正在这样做:

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

如果我仅在ssh URL内启动bash -c,它会工作,但如果我完成它,它将结束执行并将我放到ssh URL之外。 如果我在最后执行bash -i,它会显示“ bash:此shell中没有作业控制”,并把我甩了出去。 -exec选项执行相同的操作。

有人看到我在做什么错吗?

您可以将任意复杂的脚本传递给bash进行标准输入。

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

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

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

chmod +x mycommands.sh

然后在编写bash的位置调用mycommands.sh

但是你也可以

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM