在另一个* .sh文件

时间:2016-04-20 16:38:50

标签: windows bash

我是这些事情的新手,感到有些失落。

我的系统是Windows 7。

我有一个外部初始化文件 init.sh

# Some code...

exec "${BASH}" --login -i

现在我正在编写自己的文件 myFile.sh ,它通过调用 init.sh 开始,并且应该在 init的bash上下文中执行更多代码。 SH 。我试过了:

exec "init.sh"

# Further code here

哪个不行。我将不胜感激任何帮助。

2 个答案:

答案 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"

是一个简短的手。