bash 测试在 .xsessionrc 中工作但在命令行上工作正常时遇到问题

bash 测试在 .xsessionrc 中工作但在命令行上工作正常时遇到问题

我显然无法解决在我看来简单的 rtfm 问题。此行在命令行(zsh 和 bash)上运行良好:-

[[ -f ${HOME}/.xsessionrc.local ]] && . ${HOME}/.xsessionrc.local

当我将它放入我的 .xsessionrc (用 bash 进行修改)时,它没有。

我是否误解双方括号应该起作用?正如我所说,它们是在 bash 命令行上执行的。

这两行都有效(未注释时):-

并不是说我首先需要它清楚地工作,我可以使用其他形式之一,但为什么它不能“在脚本中”工作,但直接从命令行使用时却可以呢?关于 XSession 如何获取 .xsessionrc 的一些细微差别?

  # F=${HOME}/.xsessionrc.local;[ -f $F ] && . $F
  # [ -f ~/.xsessionrc.local ] && .  ${HOME}/.xsessionrc.local

谢谢你的耐心。我现在对此视而不见。我花了几个小时在这上面;)

答案1

使用

[ -f "$HOME/.xsessionrc.local" ] && . "$HOME/.xsessionrc.local"

即,单方括号并引用文件的路径名。

bash双方括号是(和其他)shell中的非标准测试语法。目前尚不清楚它实际上bash正在读取您的文件,并且很可能/bin/sh不理解用于测试的双方括号语法。

也可以看看:

相关内容