![bash 测试在 .xsessionrc 中工作但在命令行上工作正常时遇到问题](https://linux22.com/image/185736/bash%20%E6%B5%8B%E8%AF%95%E5%9C%A8%20.xsessionrc%20%E4%B8%AD%E5%B7%A5%E4%BD%9C%E4%BD%86%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%8A%E5%B7%A5%E4%BD%9C%E6%AD%A3%E5%B8%B8%E6%97%B6%E9%81%87%E5%88%B0%E9%97%AE%E9%A2%98.png)
我显然无法解决在我看来简单的 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
不理解用于测试的双方括号语法。
也可以看看: