我是这些事情的新手,感到有些失落。
我的系统是Windows 7。
我有一个外部初始化文件 init.sh :
# Some code...
exec "${BASH}" --login -i
现在我正在编写自己的文件 myFile.sh ,它通过调用 init.sh 开始,并且应该在 init的bash上下文中执行更多代码。 SH 。我试过了:
exec "init.sh"
# Further code here
哪个不行。我将不胜感激任何帮助。
答案 0 :(得分:0)
exec
立即用exec
编辑的内容替换进程。您无法在exec
之后运行代码,因为在exec
之前运行的代码已消失,由新进程替换。通常情况下,将exec "init.sh"
替换为. "init.sh"
(或source "init.sh"
)可以让您在不替换shell的情况下在当前shell中运行init.sh
的内容,但是因为{{1} }本身包含init.sh
,但不起作用。
鉴于exec
在交互模式下运行,在任何情况下执行更多代码都没有意义;一个shebang(init.sh
)行可用于为剩余代码创建#!init.sh
解释器,但由于它是交互式的,因此没有意义。
这听起来非常像你在这里重新发明init.sh
/ .bashrc
/ .bash_profile
个文件;你可能想看看那些,而不是试图模拟它们,非常糟糕。
答案 1 :(得分:0)
您可以使用source
命令:
source "init.sh"
这将在引用的脚本(" init.sh")中运行命令,就像它的内容在此脚本中一样。
. "init.sh"
是一个简短的手。