Re: Korn shell question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux