2005/06/05 How does a shell script know how it was invoked?
Sometimes you want a shell script to have different behavior depending upon how it was invoked. One trick I've used in that situation is to walk the process tree backwards and see what invoked the script. You can do that using ps or by looking in /proc. PPID is probably in your environment already, so it can be as simple as
ps -p $PPID -o cmd or ps -p $PPID -o comm
Of course that may not be far enough up the tree to find out whatever it is you need to know. For example, see How do I find out who or what halted my system (Old Sco Unix)?.
In some cases, it's not so much what invoked the script as what it is running under: is it reading from a pipe, for example. The "tty" command can tell you that:
$ cat t.sh tty || exit 1 echo "OK" $ ./t.sh /dev/pts/0 OK $ date | ./t.sh not a tty
Got something to add? Send me email.
(OLDER) <- More Stuff -> (NEWER) (NEWEST)
Printer Friendly Version
Increase ad revenue 50-250% with Ezoic
Inexpensive and informative Apple related e-books:
Take Control of Upgrading to El Capitan
Take Control of Security for Mac Users
Take Control of iCloud
Take Control of the Mac Command Line with Terminal, Second Edition
Take Control of Pages