Cygwin中的bash shell
当我在Cygwin终端时,我可以轻松使用“source”命令.
例如,假设我有一个名为“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”之后,我收到以下错误: $clear bash: clear: command not found 我甚至尝试更改run_alias.sh,如下所示: #!/bin/bash -f echo `source my_aliases.sh` 但是现在当运行run_alias.sh并键入clear时,我得到完全相同的错误消息! 知道如何从Cygwin中的其他shell脚本调用“source”命令吗? 解决方法
子进程不能改变其父进程的环境.
执行run_alias.sh脚本时,将启动一个新的bash进程,该进程会为您的别名文件提供源代码.然后脚本结束,bash进程终止,并使用它修改环境. 如果您希望别名自动可用,请从$HOME / .bashrc文件中获取它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |