l i n u x - u s e r s - g r o u p - o f - d a v i s
Next Meeting:
July 7: Social gathering
Next Installfest:
Latest News:
Jun. 14: June LUGOD meeting cancelled
Page last updated:
2004 Aug 27 11:39

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] Identifying the directory that contains the currentlyrunning executable?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] Identifying the directory that contains the currentlyrunning executable?

On Fri, Aug 27, 2004 at 10:28:27AM -0700, Ken Bloom wrote:
> Is there a way to identify the directory that contains the currently
> running script in bash? i.e. if I'm running /home/bloom/bin/foo in
> /bin/bash, and pwd is /home/bloom, how can I programmatically get
> either /home/bloom/bin/foo or /home/bloom/bin to refer to it?
> (This would be particularly nice when using calling `java -classpath`
> from a shell script wrapper)

$0 has already been suggested, but looking at the bash reference manual,
it sounds like $_ might also be useful:

    (An underscore.) At shell startup, set to the absolute filename of
    the shell or shell script being executed as passed in the argument
    list. Subsequently, expands to the last argument to the previous
    command, after expansion. Also set to the full pathname of each
    command executed and placed in the environment exported to that
    command. When checking mail, this parameter holds the name of the
    mail file.

I haven't actually tried that, but it sounds like you'd need to capture
it as the first command of your shell script.

> Are there ways to do this in other scripting languages (e.g. perl)?

This should work in Perl:

    use FindBin;

    print $FindBin::Bin, "\n";



* Matt Roper <matt@mattrope.com>                *
* http://www.mattrope.com                       *
* PGP Key: http://www.mattrope.com/mattrope.asc *
vox-tech mailing list

LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
Appahost Applications
For a significant contribution towards our projector, and a generous donation to allow us to continue meeting at the Davis Library.