记住在子 shell 中启用 -n

记住在子 shell 中启用 -n

我已禁用echo built-in,以便echo在 中搜索$PATH。我enable -n为此使用了命令。请看下文。

$ type echo
echo is a shell builtin
$ enable -n echo
$ type echo
echo is /bin/echo

echo但是当我从当前 shell 打开子 shell 时,再次使用内置的。请看下文。

$ type echo
echo is /bin/echo
$ bash
$ # Now I am in child shell
$ type echo
echo is a shell builtin

有什么方法可以在子 shell 中保留此设置,以便在子 shell 中也echo可以找到$PATH(即enable -n echo保持有效)?

答案1

是的,有两种方法。一种用于交互式,另一种用于非交互式 bash shell。

对于交互式 bash shell,请将命令放入文件enable -n echo$HOME/.bashrc。然后所有交互式 shell 都将使用外部回显。

我愿意不是建议对非交互式 shell 执行此操作,但要执行此操作,您需要将环境变量设置BASH_ENV为包含行enable -n echo.然后,所有非交互式 bash shell 将运行由 BASH_ENV 文件命名的文件,从而使它们使用外部回显。

答案2

(“enable -n”)似乎是bash 特有的功能。你可以把

enable -n echo

在相应的 shell 初始化脚本中,例如~/.bashrc,以便它会影响您调用的每个 shell。

相关内容