Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: find the shell inside a perl script

by graff (Chancellor)
on Jun 23, 2006 at 02:30 UTC ( [id://557069]=note: print w/replies, xml ) Need Help??


in reply to find the shell inside a perl script

From the command line if I execute echo $0, I will be able to find the shell name. How can I find this inside a script whithout using `echo $0`. I think there is no use of this command inside a perl script.

You mean there's no point trying to use `echo $0` from inside a perl script, because that will never give you the information you need (as indicated by an earlier reply).

You could get the return value from the getppid function call -- this would be the pid of the shell that is running the perl script -- and then you would have to look up that pid in the system's process table to figure out the command name associated with it. That would require either a special module for looking up the process table on your particular OS, or else running "ps" in backticks to get the command name. Something like this seems to work for me (on bsd-based macosx):

my $ppid = getppid; my $ppdescrip = `ps -p $ppid`; my ( $shell_name ) = ( $ppdescrip =~ /(\S+)\s*$/ ); # shell name is last word in the output of "ps -p pid"
I expect the ps command line, and/or where to find the shell name in the ps output, might vary slightly depending on your particular OS (and your script knows what OS you have: look for the "$^O" variable in perlvar).

And of course, the only time this might fail is when the perl script has been invoked by something other than a shell. But I assume that will never be relevant in your case.

(update: I'm still curious about what sorts of things you could possibly be doing inside the perl script that need to depend on which flavor of shell was used to run the script.)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://557069]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (12)
As of 2024-04-23 14:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found