Determining absolute PATH within KSH script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Determining absolute PATH within KSH script
# 1  
Old 06-13-2002
Determining absolute PATH within KSH script

Hey everyone,

I'd like to determine the absolute path of where a script resides from within the same script. For example, I have a script - /tmp/myscript. Regardless of how that script is call - '/tmp/myscript', 'cd /tmp;./myscript', '. /tmp/myscript' - I'd like to be able to determine - from within 'myscript' - that it's located in '/tmp'.

I've tried combinations of ${PWD}, ${0}, ~+, but nothing has worked, esp. when sourcing the script.

Any ideas will be GREAT appreciated (I've spent almost a day trying to figure this out).

Thanks.
# 2  
Old 06-13-2002
If it has to work all the time, it's impossible. There is no hope with something like:
cat /tmp/myscript | ksh
There is also no hope when sourcing the file.

$0 should work in most other cases, in fact, I can't think of another case where it fails. If $0 is a relative path, you may want to tranform it into a absolute path.

It is low-tech, but you could put a line:
MYPATH=/tmp/myscript
in the script. If the script is running as root, the script can invoke fuser on MYPATH and verify that the current process at least has the file open.
# 3  
Old 06-13-2002
That - it's impossible - is what I've been afraid of. And am surprised about - I really thought I'd find something. I have made something work up to this point using a combination of ${PWD} and ${0} but sourcing screwed that up.

I'm trying to stay away from hardcoding anything with regards to the parent path so that I can have "production" and "dev" copies of scripts with identical subdirectory structures.

Anyway, thanks for the reply.
# 4  
Old 06-14-2002
The following works fine for me on hp/ux - ksh:


if [[ $0 != "/"* ]]; then
myPath=`pwd`
else
myPath=`dirname $0`
fi
echo $myPath


Maybe I missed something Smilie
# 5  
Old 06-14-2002
Thanks for the reply. I do appreciate the input. One problem with the code though - trying sourcing the script and you'll get the directory you sourced the script from and not the directory the script is in. For example:

cd /home/myhome
. /tmp/myscript
myPath = /home/myhome
# 6  
Old 06-14-2002
Oops you are right: when sourcing my script, the os sees only -ksh as $0 during execution, w/o any $1 etc.... Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Convert Relative path to Absolute path, without changing directory to the file location.

Hello, I am creating a file with all the source folders included in my git branch, when i grep for the used source, i found source included as relative path instead of absolute path, how can convert relative path to absolute path without changing directory to that folder and using readlink -f ? ... (4 Replies)
Discussion started by: Sekhar419
4 Replies

2. UNIX for Dummies Questions & Answers

How to convert relative path to absolute path?

Hello Everyone, I want to convert Relative Path - /home/stevin/data/APP_SERVICE/../datafile.txt to Absolute Path - /home/stevin/data/datafile.txt Is there a built-in tool in Unix to do this or any good ideas as to how can I implement this. -Steve (5 Replies)
Discussion started by: qwarentine
5 Replies

3. Shell Programming and Scripting

Automatically determining directory path for scripts and programs

I have some C++ code in the following directory structure /home/chrisd/tatsh/trunk/hstmy/ ├── baseLib ├── bin │ ├── awk │ ├── bash │ ├── diag │ ├── ksh │ │ └── TAG201011 │ ├── old │ ├── perl │ ├── prog │ ├── py │ └── tcsh ├── docs ├── fortran ├── others... (0 Replies)
Discussion started by: kristinu
0 Replies

4. Shell Programming and Scripting

How to change Absolute path to Relative path

Hello, I have a doubt:- --------------------- Current script:- ################################################################################################ prefix=user@my-server: find . -depth -type d -name .git -printf '%h\0' | while read -d "" path ; do ( cd "$path" || exit $?... (4 Replies)
Discussion started by: sahil_jammu
4 Replies

5. Shell Programming and Scripting

Determining whether given string is path or not

I have an issue while determing whether given string is unix path or not There is a text file which is normally a report in that at some place we have unix path as shown below /opt/smart/dev/eur/sources/sqr and not unix path as shown below Threshold Year/Month/Ref/ActLine/OUC Is there... (3 Replies)
Discussion started by: lalitpct
3 Replies

6. 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

7. UNIX for Dummies Questions & Answers

Help with absolute path and relative path

I'm having problems accessing the Knoppix software on my current computer and the replacement CD I ordered hasn't arrived yet. I have a guess at what the answer would be for this question but I am not sure as I cannot test it with the software. I have to create a directory called class, and... (1 Reply)
Discussion started by: mzero
1 Replies

8. UNIX for Dummies Questions & Answers

absolute path

is cd ~ considered an absolute path? (2 Replies)
Discussion started by: Kirichiko
2 Replies

9. Shell Programming and Scripting

Determining directory path

Hello, I have a script where I get the full directory path of the script being executed: BASE=$0 echo "BASE:" $BASE The output looks like this: BASE: /webapps/appsdev/ACURA/rlz/oses3.sh I'd like to truncate the shell name, leaving just the directory path. The directory path can be... (2 Replies)
Discussion started by: cwalsek
2 Replies

10. UNIX for Dummies Questions & Answers

vi - replacing a relative path with absolute path in a file

Hi, I have a file with about 60 lines of path: app-defaults/boxXYZ....... I want to change this to /my/path/goes/here/app-defaults/boxXYZ, but of course vi doesn't like the regualr :s/old/new/ command. Is there any other quick way to do this? Thanks ;) (2 Replies)
Discussion started by: Yinzer955i
2 Replies
Login or Register to Ask a Question