I have a script that I want to have a different behaviour depending on whether it was launched from the terminal or by (double) clicking the icon in the file manager. Can I do this?
Asked
Active
Viewed 321 times
3 Answers
4
You can use differences in the return status from tty to help you.
if tty -s;
then
# running in a terminal
...
fi
(tty -s runs the tty command silently)
Exit status:
- 0 if standard input is a terminal
- 1 if standard input is not a terminal
- 2 if given incorrect arguments
- 3 if a write error occurs
Or you could use the shell's built-in tests to check whether standard input/output are from/to a terminal:
if [ -t 0 ]; # stdin
then
# running in a terminal
...
fi
njd
- 11,426
0
If this is in your in your own computer, with you having make the icon, you could just pass an extra parameter on the command line referred by the icon, such as:
/path/to/my/script fromgui arg2 arg3 .. argN
And just test [[ "$1" == "fromgui" ]] or simil.
ata
- 150
0
Another possible check, see what's in /proc/$PPID/cmdline
This is the command line (NUL delimited) of the process that spawned you,
Rich Homolka
- 32,350