l i n u x - u s e r s - g r o u p - o f - d a v i s
L U G O D
 
Next Meeting:
July 21: Defensive computing: Information security for individuals
Next Installfest:
TBD
Latest News:
Jul. 4: July, August and September: Security, Photography and Programming for Kids
Page last updated:
2004 Aug 27 12:12

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 11:04:42AM -0700, Matt Roper wrote:
> 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.

Doesn't seem to do it.

#!/bin/bash
#next line must be first line
SCRIPTPATH=$_
echo $SCRIPTPATH
echo $(dirname $SCRIPTPATH)

[bloom@kabloom ~]$ bash test/test2
bash
.
[bloom@kabloom ~]$ test/test2
/bin/bash
/bin

> 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:
> 
>     #!/usr/bin/perl
>     use FindBin;
> 
>     print $FindBin::Bin, "\n";

That works perfectly.

Maybe I'll just rewrite scripts that need that in Perl.

--Ken Bloom
-- 
I usually have a GPG digital signature included as an attachment.
See http://www.gnupg.org/ for info about these digital signatures.
My key was last signed 08/18/2004. If you use GPG *please* see me about 
signing the key. ***** My computer can't give you viruses by email. ***

Attachment: signature.asc
Description: Digital signature

_______________________________________________
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech


LinkedIn
LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
facebook
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:
EDGE Tech Corp.
For donating some give-aways for our meetings.