Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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?

share|improve this question
    
Write a bah script that writes env to "scriptenv_$( date +%s )". Start once with each method, and compare the output. –  Daniel Beck Nov 21 '11 at 9:44

3 Answers 3

up vote 4 down vote accepted

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
share|improve this answer

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.

share|improve this answer

Another possible check, see what's in /proc/$PPID/cmdline

This is the command line (NUL delimited) of the process that spawned you,

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.