[vox-tech] Identifying the directory that contains the currently running executable?

Mitch Patenaude mrp at sonic.net
Fri Aug 27 10:49:52 PDT 2004


/proc/$PID/cwd will give the current working directory as a symlink.

If you're trying to do this with C/C++, then you can use lstat(2) and 
readlink(2) to get the information.

In a bash script, $0 will give you the argument used to invoke the 
script.  If it was invoked with a full path, then you can use dirname 
to get the directory.

i.e.
MYDIR = `/usr/bin/dirname $0`

Otherwise you can iterate through the elements in $PATH and look for 
the executable.  I don't remember how to do that, maybe somebody else 
does.

   -- Mitch


On Aug 27, 2004, at 10:28 AM, Ken Bloom wrote:

> Is there a way to identify the directory that contains the currently
> running executable, so that I can programmatically refer to it?
> i.e. if I am running /usr/bin/myprog, but pwd is /home/bloom, how can
> I programmatically get either the pathname '/usr/bin' or
> '/usr/bin/myprog'. (This question asks about a C program).
>
> 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)
>
> Are there ways to do this in other scripting languages (e.g. perl)?
>
> -- 
> 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. ***
> _______________________________________________
> vox-tech mailing list
> vox-tech at lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech



More information about the vox-tech mailing list