Определите, был ли запущен bash-скрипт по щелчку значка или из терминала
У меня есть сценарий, который я хочу иметь другое поведение в зависимости от того, был ли он запущен из терминала или (дважды) щелкнув значок в файловом менеджере. Я могу это сделать?
3 ответа
Вы можете использовать различия в статусе возврата от tty
чтобы помочь вам.
if tty -s;
then
# running in a terminal
...
fi
(tty -s
управляет tty
командуй молча)
Статус выхода:
- 0, если стандартный ввод является терминалом
- 1, если стандартный ввод не является терминалом
- 2 если даны неверные аргументы
- 3, если происходит ошибка записи
Или вы можете использовать встроенные в оболочку тесты, чтобы проверить, поступают ли стандартный ввод / вывод с терминала на терминал:
if [ -t 0 ]; # stdin
then
# running in a terminal
...
fi
Если это у вас на вашем компьютере, когда у вас есть значок, вы можете просто передать дополнительный параметр в командной строке, обозначенный значком, например:
/path/to/my/script fromgui arg2 arg3 .. argN
И просто проверить [[ "$1" == "fromgui" ]]
или похож.
Еще одна возможная проверка, посмотрите, что находится в /proc/$PPID/cmdline
Это командная строка (с разделением NUL) процесса, который породил вас,