path of the running script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting path of the running script
# 1  
Old 11-14-2008
Question path of the running script

Hi there,

After reading a couple posts on the subject, I came up with the compilation of all advice (that are supposed to work on any situation) and wrote the following script.
But tell me something... Is it that crazy that there's no other way to get the same solution!!!
Code:
#!/bin/bash
exec=$(ps -p $$ --no-heading -o args | cut -d' ' -f2-)
args="$@"; [[ ${#args} -gt 0 ]] && exec=${exec:0:${#exec}-${#args}-1}
exec=$(realpath "$exec")
echo "$exec"

If you have a better or simplier solution, I'd be happy not to be able to tell you that it doesn't work all the time.
Thx in advance
Santiago
# 2  
Old 11-14-2008
Couple of comments:
1. this is a very hard problem. Period. There are many ways to invoke a script
Perderabo has a long discussion about this if you have not already seen the thread.

2. Consider: Do not use exec as a variable name - it is a builtin in bash.
# 3  
Old 11-14-2008
Thx jim mcnamara for your answer,
1) I searched the forum for "perderabo path running script" but could not find the thread you're talking about
2) Thanks for the advice
# 4  
Old 11-14-2008
What's wrong with $0 (or $BASH_SOURCE if the script is being sourced (bash >= 3 only))?

Last edited by radoulov; 11-14-2008 at 01:06 PM..
# 5  
Old 11-14-2008
Do you mean just the path, why not simply use:

dirname $0

if you want to assign it to a variable use

path_to_script=$(dirname $0)

or is this not what you mean?

S.
# 6  
Old 11-14-2008
Thank you radoulov.
$0 will only give me the path to the file as the user called it. If my script is in the PATH, the user will call it by it's bare name and I will not be able to know the full path to it. I will study $BASH_SOURCE. What do you mean by (bash >= 3 only)?

Thank you Scrutinizer.
Same explanation as above. If the user calls my script by its bare name, dirname $0 will output nothing.

Last edited by chebarbudo; 11-14-2008 at 01:38 PM.. Reason: add question
# 7  
Old 11-14-2008
I suppose I misread the question,
do you need something like this (assuming POSIX shell):

Code:
$ ./s
--> /home/sysadmin/t
$ ./../t/s
--> /home/sysadmin/t
$ cat s
#! /bin/bash

cd -- "${0%/*}" && p="$(pwd -P)"

printf -- '--> %s\n' "$p"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Command to see the logical volume path, device mapper path and its corresponding dm device path

Currently I am using this laborious command lvdisplay | awk '/LV Path/ {p=$3} /LV Name/ {n=$3} /VG Name/ {v=$3} /Block device/ {d=$3; sub(".*:", "/dev/dm-", d); printf "%s\t%s\t%s\n", p, "/dev/mapper/"v"-"n, d}' Would like to know if there is any shorter method to get this mapping of... (2 Replies)
Discussion started by: royalibrahim
2 Replies

2. Linux

Cmd is not running , eventhough its in right path

I can not run iwmodelc from command line. It says file not found. Please look at the command line output below-ksh: /app/Autonomy/Interwoven/TeamSite/bin: cannot execute $ pwd /app/Autonomy/Interwoven/TeamSite/bin $ ls email_to.ipl iwfilestate iwrecentusers iwabort ... (2 Replies)
Discussion started by: paramshamnani
2 Replies

3. HP-UX

upgrade path for Digital Alphastation 200 running openVMS 6.1?

I am not sure here is the right place to post this question. as openvms is under HP's belt now, i guess here might be the right place to try my luck. we have very old machines here which are still running quite well. (APLHASTATION 200 WITH OPENVMS 6.1) the only problem is difficulty of... (2 Replies)
Discussion started by: Cheong
2 Replies

4. UNIX for Dummies Questions & Answers

running script without a path

can someone tell me how could I run a script in an environment that does not include a path? like the environment provided by cron? (1 Reply)
Discussion started by: ikeQ
1 Replies

5. Shell Programming and Scripting

absolute path for a script ran with relative path

I have a script in which i want to print absolute path of the same script irrespective of path from where i run script. I am using test.sh: echo "pwd : `pwd`" echo "script name: $0" echo "dirname: `dirname $0`" when i run script from /my/test/dir/struct as ../test.sh the output i... (10 Replies)
Discussion started by: rss67
10 Replies

6. Programming

get the path of current running program

How does the program know the full path of itself when the program is running in certain diretory? BTW, I have no "argv" information of main() functino. (The program is written in C++ on linux platform) (1 Reply)
Discussion started by: princelinux
1 Replies

7. Shell Programming and Scripting

Finding path of a running script

Hi, I just want to know any code by which i can get the path of the script which i am running. This is required to store the output in the same directory from where the script is running. pwd fails if I give absolute path of script from some other directory. Thanks in advance Puneet (3 Replies)
Discussion started by: puneet
3 Replies

8. Solaris

Running from Shell Vs running from RC script

Hi, i have a script which need to do behave differently when run as a startup process from init.d/ rc2.d script and when run manually from shell. How do i distinguish whether my script is run by init process or by shell?? Will the command /proc/$$/psinfo | grep "myscript" work well???... (2 Replies)
Discussion started by: vickylife
2 Replies

9. Shell Programming and Scripting

running a command without having to provide the path

ok, i am aware of adding the directory where the files are located into the .profile file but the problem is, its not working for me. can someone please spell out how to properly edit these configuration files so i can run a command anywhere on the system without having to be in the... (2 Replies)
Discussion started by: Terrible
2 Replies

10. Programming

find the fully-qualified path for the app my module is running in

Hi- I need the cpp call that will tell me the full path to the app I'm running in. For example, I'm running in a loaded library for either mozilla or firefox, but would like to know the full path to the executable /usr/bin/firefox /usr/bin/mozilla /usr/local/firefox1_5 etc... (For... (4 Replies)
Discussion started by: erwinfletch
4 Replies
Login or Register to Ask a Question