Скрипт запускается, когда я набираю его в терминале, но не когда я запускаю его из файла.sh
Я хотел запустить это при запуске, потому что мне нравится играть с несколькими DE. Когда я запускаю этот скрипт из файла, он не запускает Docky.
Я уже изменил права доступа к файлу, чтобы он мог работать как программа.
Когда я ввожу именно это в gnome-терминал, он запускает Docky, если я вошел в gnome-classic. Я хотел запустить этот скрипт при запуске, чтобы Docky не запускался в Unity:
if [ $DESKTOP_SESSION == "gnome-classic" ] ; then docky ; fi
Какие-либо предложения? Я попытался написать что-то вроде Firefox в том же файле, и он запустит Firefox. Поэтому, когда я запускаю следующий скрипт из файла...
cd /home/user/Desktop
mkdir ITRAN
if [ $DESKTOP_SESSION == "gnome-classic" ] ; then docky ; fi
Он создает новый файл на моем рабочем столе, но не запускает Docky, даже если я просто скопирую тот же код в окно терминала, которое он запускает...
С помощью гейры я изменил сценарий. Тем не менее, теперь Docky запускается независимо от того, какой DE я запускаю, Unity или gnome-classic.
#!/bin/sh
if [ $DESKTOP_SESSION = "gnome-classic" ]; then
docky
fi
Я также пытался
$DESKTOP_SESSION = "gnome-classic"
$DESKTOP_SESSION = gnome-classic
"$DESKTOP_SESSION" = gnome-classic
"$DESKTOP_SESSION" = "gnome-classic"
исключить возможность того, что я ошибся в этой части.
2 ответа
[
команда не имеет ==
оператор. Баш позволяет это, но черта будет съеживаться. Правильный оператор для использования =
, Сценарий, который вы опубликовали в своем вопросе, не имеет шебанга, поэтому, скорее всего, он будет запущен sh
, Так:
#!/bin/sh
mkdir -p "$HOME/Desktop/ITRAN"
if [ "$DESKTOP_SESSION" = gnome-classic ]; then
docky
fi
В любом случае, если это не удастся, вы, скорее всего, найдете сообщения об ошибках в ~/.xsession-errors
так что ищите подсказки.
Убедитесь, что ваш скрипт начинается с:
#!/bin/sh
Кроме того, убедитесь, что ваш скрипт исполняемый:
chmod a+x path/to/your/script.sh