Dear Log,
So, at times, I want to make my programs do slightly different things (like having a different default debug level, for example) depending on whether they're running under crontab, or at a shell prompt, or whatever. What I do is set some env vars in my .cshrc. This is not a one-size-fits-all solution, but it works for me:
if ( $?prompt ) then # An interactive session of some kind setenv SMB_INTERACTIVE 1 if( ! $?TERM ) then # running like under the winscp "terminal" setenv SMB_TERMINAL 0 set history = 0 else setenv SMB_TERMINAL 1 # Normal toplevel interactive shell endif if( ! $?TERM ) then # We're under a nonterminal (scp, etc) else if( $TERM == screen ) then # a Screen window alias screen 'echo Already under screen.' else if($?SSH_TTY) then # Normal SSH stuff else # Not over SSH -- a local terminal? or telnet!? endif else # Not an interactive session. setenv SMB_TERMINAL 0 setenv SMB_INTERACTIVE 0 set history = 0 endif
Sometimes I want a program to be able to tell when it's being run by an emacs process. For that, I just set this in my .emacs.config:
(setenv "UNDER_EMACS" "1")
Like I say, it's not guaranteed to work everywhere forever, but maybe you can use it.