absolute path for a script ran with relative path


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting absolute path for a script ran with relative path
# 1  
Old 04-07-2010
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 get is

pwd : /my/test/dir/struct
script name: ../test.sh
dirname: ..

I want dirname to be printed as absolute path. script gives proper output if I run it with absolute path.
as /my/test/dir/test.sh the output i get is

pwd : /my/test/dir/struct
script name: /my/test/dir/test.sh
dirname: /my/test/dir

i want the same output in case when i run script using relative path
# 2  
Old 04-07-2010
MySQL

Code:
$ cat test.sh
currentpath="`pwd`/"
currentscript=`echo $0 | sed 's/^[./]*//'`
echo "pwd : `pwd`"
echo "script name: $currentpath$currentscript"
echo "dirname: `dirname $currentpath`"

Code:
$ ./test.sh
pwd : /my/test/dir/struct
script name: /my/test/dir/struct/test.sh
dirname: /my/test/dir

# 3  
Old 04-07-2010
Hi,

not all systems have this, but if you are lucky:

Code:
 
#!/bin/bash
 
PNAME=$(readlink -f $0)

# 4  
Old 04-07-2010
hi grepFruit,
thanks for replying, but i want the script to run on all machines, so i dont think so i'll be able to use "readlink" (i found that its not working on SunOS 5.10).


---------- Post updated at 07:18 PM ---------- Previous update was at 06:54 PM ----------

hi ygemici,
thnx for replying,
with the suggestion provided i am able to get absolute script path when i run script from the directoy where it is situated i.e. using ./test.sh.
# cat test.sh
currentpath="`pwd`/"
currentscript=`echo $0 | sed 's/^[./]*//'`
echo "currentscript : $currentscript"
echo "script name: $currentpath$currentscript"

# ./test.sh
currentscript : test.sh
script name: /my/test/dir/test.sh
but my real concern is in situation where i run script using ../ as in following case
# pwd
/my/test1
bash-3.00# ../test/dir/test.sh
currentscript : test/dir/test.sh
script name: /my/test1/test/dir/test.sh
bash-3.00#
scriptname should have been "/my/test/dir/test.sh"
# 5  
Old 04-07-2010
Since your original code is using the obsolete command substitution syntax, I assumed it was a constraint.

Code:
#!/bin/sh

if cd "`dirname \"$0\"`"; then
    absdirpath=`pwd`
    cd "$OLDPWD" || exit 1
else
    exit 1
fi

echo "pwd: `pwd`"
echo "script name: $0"
echo "dirname: $absdirpath"

Regards,
Alister

Last edited by alister; 04-07-2010 at 12:48 PM..
# 6  
Old 04-07-2010
hi alister,

got what you are doing,
"`dirname \"$0\"`" is a relative path, but still its a valid path from current pwd. so you are jumping to that path, then get new pwd in variable, which will give me what i want. and then jump back to old pwd where i wad initially.
thanks buddy.
# 7  
Old 04-07-2010
You're very welcome. By the way, you can probably replace any `pwd` command substitutions with the with the environment's $PWD.
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

Help with cp command using relative path?

I have a lab I am doing for a Linux Operating class. The question I am stumped on is "For the following questions, only use the cp command to copy files. You should currently be inside your lab07 directory. Create a subdirectory inside this directory called ones and copy (working ... (1 Reply)
Discussion started by: CodyMongrel
1 Replies

3. Shell Programming and Scripting

Relative path not safe

Hallo everyone, I am running an SQL-Script over KShell-Script. Thus, in the KShell-Script there are these lines: WORKPATH=$PWD/work EXPORTDIR=export_meine_datei_bitte EXPORTPATH=${WORKPATH}/${EXPORTDIR} ... db2 connect to ${DBNAME} || die "can not open database connection" db2... (9 Replies)
Discussion started by: ratnalein88
9 Replies

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

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

6. Shell Programming and Scripting

how to read the relative path

suppose i ahve a shell script Nsdnet.sh inside a directory /dialp/Release/bin another file nsdnet_file.csv is under the same directory. Now in the shell script i have call a java file, which reads the csvfile from the commandline. Now when i run the file as $ ./Nsdnet.sh ./nsdnet_file.csv then... (5 Replies)
Discussion started by: priyanka3006
5 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. Shell Programming and Scripting

getting full path from relative path

given a relative path, how do i convert it into a full one. i.e. if i am in /home/polypus and i am given foo/bar then to get a full path i can just concatinate it with pwd, but what if i am given "../mama" how do i programmatically convert: /home/polypus and ../mama into ... (4 Replies)
Discussion started by: polypus
4 Replies

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

10. Shell Programming and Scripting

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... (5 Replies)
Discussion started by: gsatch
5 Replies
Login or Register to Ask a Question

Featured Tech Videos