加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Cygwin中的bash shell

发布时间:2020-12-16 01:57:54 所属栏目:安全 来源:网络整理
导读:当我在Cygwin终端时,我可以轻松使用“source”命令. 例如,假设我有一个名为“my_aliases.sh”的文件,其中包含以下内容 #!/bin/bash -falias clear='cmd /c cls'#unalias clear 然后在Cygwin终端上,我可以输入 $source my_aliases.sh 它只是工作正常,每当我键
当我在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文件中获取它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读