4

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?

B. Marek
  • 309

3 Answers3

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