可能在 .bashrc 中返回错误代码的命令

可能在 .bashrc 中返回错误代码的命令

我想在内部设置一个变量.bashrc,使其等于可能返回错误代码的命令的输出。

我不知道做这样的事情会带来什么影响。即使此命令失败,其他一切都会正常工作吗?

当前的代码.bashrc很简单:

export MYVAR=$(my_dubious_command 2>/dev/null)

这样做安全吗?

答案1

咱们试试吧:

$ var=$(false)
$ echo $?
1
$

但是,您不太可能errexit在 .bashrc 中进行设置,并且下一个命令检查命令的退出代码的可能性更小,因此它不太可能影响任何内容。

.bashrc 等启动脚本是您可以执行的操作之一不是想要这样做set -o errexit,因为您可能会因为简单的拼写错误或您无法控制的更改而被阻止出 shell。要检测但不因错误而失败,您可以捕获它们:

$ trap 'echo $?' ERR
$ var=$(false)
1
$

这在以下方面非常有用迅速的, 例如。

答案2

作为 l0b0,您的 .bashrc 不太可能使用errexitset 运行,但您可以通过测试来处理这种情况:

case $SHELLOPTS in
  (*errexit*)   set +e;
                export MYVAR=$(my_dubious_command 2>/dev/null);
                set -e
                ;;
  (*)           export MYVAR=$(my_dubious_command 2>/dev/null)
                ;;
esac

export命令,如所写,应返回 0,以防任何后续命令检查$?;您没有为其提供任何无效选项,变量名称是有效的,并且您没有导出不存在的函数。

case 语句检查是否errexit已设置;如果是这样,它会暂时将其关闭以便运行my_dubious_command

相关内容