我在 *.sh 文件中有此脚本,用于启用自然滚动。我已将其添加到Startup Application
。
#!/bin/sh
xinput set-prop 11 268 -106 -106
nautilus -q && nautilus -n
问题是,每当我登录时,最后一个命令 ( nautilus -n
) 都不会运行 - 这很烦人,因为我无法使用 Super 按钮打开 Dash - 我必须手动运行 nautilus。出了什么问题?
更新:
我已经在终端上逐行测试了上述脚本,它运行良好。只有当我从 .sh 文件运行它时才会出现问题。
nautilus -q && touch $HOME/Desktop/reported-success.txt
给我 txt 文件,
其结果nautilus -q && nautilus -n &> $HOME/nautilus-output.log
为:
Initializing nautilus-open-terminal extension
Initializing nautilus-image-converter extension
Initializing nautilus-dropbox 1.4.0
答案1
从脚本上看,这意味着nautilus -q
返回了一个非零退出代码。因此,&&
计算结果为 false 并且nautilus -n
不会执行。
你告诉它:跑nautilus -n
如果 nautilus -q
成功了。成功的定义是0
shell 中的退出代码。
使用;
而不是&&
无条件地执行此操作或使用小的包装脚本将您想要接受为“成功”的可能的返回代码转换为0
。
拆除正在运行的nautilus
实例的另一种方法显然是使用pkill
这种方式:
pkill -u $(whoami) ^nautilus
您可能想要指定一个特定的信号(pkill -SIGNALNAME -u ...
),但我没有找到关于对哪些信号nautilus
做出反应的文档。
上述命令将终止nautilus
以您身份运行的所有实例(whoami
)。
使用它来找出第一个命令(nautilus -q
)返回的内容:
nautilus -q || echo "exit code: $?"
您看到了什么?如果不是,0
那么这显然就是脚本逻辑所暗示的问题。
答案2
用换行符/回车符或空行结束脚本
,否则不会执行最后一个命令。