On Tue, 2008-04-15 at 16:56 -0700, Don Russell wrote: > > > On Tue, Apr 15, 2008 at 4:17 PM, Cameron Simpson <cs@xxxxxxxxxx> > wrote: > > On 15Apr2008 12:09, Don Russell <fedora@xxxxxxxxxxxxxxxxxxxxx> > wrote: > | On Tue, Apr 15, 2008 at 11:08 AM, Patrick O'Callaghan > <pocallaghan@xxxxxxxxx> > | wrote: > | > On Tue, 2008-04-15 at 10:49 -0700, Don Russell wrote: > | > > How can I tell, from a Korn shell script, if the script > is running in > | > > a vi sub-shell? > | > > > | > > I have a script that has a problem when run from a vi > subshell, and > | > > I'd like to check for that condition and just issue an > error message. > | > > (I know that's not the solution to the problem, but the > thing that > | > > fails is being replaced, so this is a temporary "fix") > | > > | > Try: > | > ls -l /proc/`cat /proc/$$/status|grep PPid|cut -f2`/exe > | > and work from there. > | > | That looks promising... thanks :-) > > > Promising, but will work only on Linux. That may be enough for > you, but you > shouldn't forget that it's nonportable. > > I just tried this on a Linux system... it makes sense... I tried it on > a UNIX (AIX) system, and it did not help directly. On UNIX the status > file appears to be "raw" binary data that maps to a C structure... > could get tricky trying to extract the correct parts. I'm amazed it even exists on AIX. I was assuming you meant Linux (this is a Fedora list after all). > On Linux, it looks like that decoding is all done and present in > human-readable terms. :-) > > > > > You can probably make that `cat|grep|cut` into a single `sed` > at some > performance benefit. > > Another approach is to alter your shell environment to always > set and export > an environment variable when starting vi (by invoking vi via a > wrapper script > or alias or shell function) and then just checking for it. > > Though simple, that's not an option for me.... I can't "wrap" vi... You can. Just put the wrapper in $HOME/bin and set PATH=$HOME/bin:$PATH, e.g. $ cat $HOME/vi #!/bin/sh export MY-SPECIAL-FLAG=1 exec /usr/bin/vi $* $ poc