У меня есть этот скрипт в файле * .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
дайте мне текстовый файл,
и результат nautilus -q && nautilus -n &> $HOME/nautilus-output.log
будет:
Initializing nautilus-open-terminal extension
Initializing nautilus-image-converter extension
Initializing nautilus-dropbox 1.4.0
Завершите сценарий символом перевода строки / ввода или пустой строки
, иначе последняя команда не будет выполнена.
Хорошо из сценария это означает, что nautilus -q
возвратил ненулевой код выхода. Следовательно, &&
оценивается как ложное, а nautilus -n
не выполняется.
Вы говорите: запустите nautilus -n
, если nautilus -q
удалось. Определение успеха - это код выхода из 0
в оболочке.
Используйте ;
вместо &&
, чтобы сделать это безоговорочно, или используйте небольшой скрипт-обертку для перевода возможных кодов возврата, которые вы хотите принять как «успех», в 0
.
Другой способ снятия запущенных экземпляров nautilus
, очевидно, заключается в использовании pkill
таким образом:
pkill -u $(whoami) ^nautilus
Возможно, вы захотите указать конкретный сигнал (pkill -SIGNALNAME -u ...
), но я не нашел документация, на которую реагируют сигналы nautilus
.
Приведенная выше команда убивает все экземпляры nautilus
, работающие от вашего имени (whoami
).
Используйте это, чтобы выяснить, что вернула первая команда (nautilus -q
):
nautilus -q || echo "exit code: $?"
Что вы видите? Если это не 0
, то это явно проблема именно так, как предлагает логика сценария.