[英]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.