在我的系统中玩耍,我偶然发现
~$ echo $XDG_DATA_DIRS
/usr/share/ubuntustudio:/usr/share/xfce4:/usr/local/share:/usr/share:/var/lib/snapd/desktop:/usr/share
Run Code Online (Sandbox Code Playgroud)
问自己为什么/usr/share在路径中出现两次,我发现以下/etc/alternatinves/x-session-manager链接到的片段
/usr/bin/startxfce4是负责任的:
~$ echo $XDG_DATA_DIRS
/usr/share/ubuntustudio:/usr/share/xfce4:/usr/local/share:/usr/share:/var/lib/snapd/desktop:/usr/share
Run Code Online (Sandbox Code Playgroud)
当我看这条线时
#!/bin/sh
.
.
.
if test "x$XDG_DATA_DIRS" = "x"
then
if test "x/usr/share" = "x/usr/local/share" -o "x/usr/share" = "x/usr/share"; then
XDG_DATA_DIRS="/usr/local/share:/usr/share"
else
XDG_DATA_DIRS="/usr/share:/usr/local/share:/usr/share"
fi
else
XDG_DATA_DIRS="$XDG_DATA_DIRS:/usr/share"
fi
export XDG_DATA_DIRS
.
.
.
Run Code Online (Sandbox Code Playgroud)
我很难理解这个 if 语句,对我来说它看起来像是字符串的比较,其中第一个总是假的,第二个总是真。
结合逻辑or,测试总是评估为true,因此我可以将行缩短为
if true; then或者我可以说我根本不需要 if 语句。
我的错误在哪里?还是这样写是为了迷惑像我这样的初学者?
你说得对,命令
\n\ntest "x/usr/share" = "x/usr/local/share" -o "x/usr/share" = "x/usr/share"\nRun Code Online (Sandbox Code Playgroud)\n\n始终返回 true (0)。
\n\n看起来有问题的文件是从更通用的版本生成的,但生成方式并不是最佳的。该脚本应该每次都询问实际路径,或者仅在生成的文件中保留相关分支。
\n\n但是,此特定文件来自您的计算机上未生成的包 \xe2\x80\x93。这可能是需要修复/改进的\xe2\x80\xa6 您可以在Xfce Bugzilla上提交错误(如果 \xe2\x80\x99s 尚未存在)或自行修复。您可以克隆Xfce4 会话的 Git 存储库,还可以使用 Xfce4 开发人员的邮件列表与他们联系。祝改进代码好运!
\n| 归档时间: |
|
| 查看次数: |
219 次 |
| 最近记录: |