当我处于Cygwin终端时,我可以很容易地使用“source”命令。Cygwin中的bash shell
例如,假设我有一个名为“my_aliases.sh”的文件,它包含以下
#!/bin/bash -f
alias clear='cmd /c cls'
#unalias clear
然后Cygwin的终端上,我可以输入
$source my_aliases.sh
它只是工作正常,只要我输入“清除”,我就可以看到它的工作原理。
但我不知道为什么在另一个shell脚本中做同样的事情,并调用该shell脚本不起作用。
例如,让我们说,我有一个名为“run_alias.sh”的文件,包含以下内容:
#!/bin/bash -f
#
a=`source my_aliases.sh`
b=`ls -ltr`
echo $a
echo $b
当我尝试运行我的文件
$ ./run_alias.sh
它只是没有做任何事情。例如,我可以看到命令(b)发生,但命令(a)没有发生。
但我跑后 “run_alias.sh”,然后键入 “清”,我得到以下错误:
$ clear
bash: clear: command not found
我甚至试图改变run_alias.sh如下:
#!/bin/bash -f
echo `source my_aliases.sh`
但是现在当运行run_alias.sh并输入clear时,我会得到完全相同的错误消息!
任何想法如何从Cygwin中的其他shell脚本调用“source”命令?
好的,谢谢你的解释。这说得通。我遇到的问题是我有一些MAKE文件,我试图从中调用一些shell脚本,其中一些shell脚本在脚本中使用“source”,我只是想解决这个问题。但即使试图调用MAKEFILE中的shell脚本仍然会造成调用子网的相同问题。无论如何要解决这个问题吗? – user2201373