我似乎无法继承set +h
调用 shell 脚本的效果:
这是一个 shell 脚本 ( ./call
)。
#!/bin/bash
set +h
export SHELLOPTS
./called
这是以下内容./called
:
#!/bin/bash
echo \$-=$-
echo SHELLOPTS=$SHELLOPTS
当我执行./call
时,将打印以下内容:
$-=hB
SHELLOPTS=braceexpand:hashall:interactive-comments
我认为当我导出 shell 选项时会继承这些选项SHELLOPTS
。显然情况并非如此。
有没有办法继承set +h
调用的shell脚本的效果?
从bash 手册:
因此,关闭的选项不会显示在 中
SHELLOPTS
,因此对于新 shell 是否启用或禁用它们没有影响。您可以尝试以下任何一种:
bash +h ./called
使用, 或运行脚本set +h
一个文件,设置BASH_ENV
为该文件的路径,export
它认为这将影响所有从该行开始的 bash 实例,除非其中一个未设置或取消导出它。