path of the running script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting path of the running script
# 22  
Old 11-15-2008
Refering to Jim's previous comments and some posts by Perderabo (here and here) it's a really hard task. For example, try running your script as

Code:
shell < scriptname

or:

Code:
cat scriptname | shell

# 23  
Old 11-15-2008
Quote:
Originally Posted by radoulov
Good points. You're right. So, as far as your initial question is concerned, _I_ have not a simpler solution.
Actually you did came up with a hugely better and simplier solution: $BASH_SOURCE.
My only question was: What do you mean by (bash >= 3 only)?
# 24  
Old 11-15-2008
Quote:
Originally Posted by chebarbudo
Actually you did came up with a hugely better and simplier solution: $BASH_SOURCE.
My only question was: What do you mean by (bash >= 3 only)?
It's the bash version Smilie 3.0 or greater ...

But I don't think it does what you need ...

Could you post an example with $BASH_SOURCE that works in all the previously described cases?

The following will fail:

Code:
bash < scriptname


Last edited by radoulov; 11-15-2008 at 08:47 AM..
# 25  
Old 11-15-2008
Quote:
Originally Posted by radoulov
Refering to Jim's previous comments and some posts by Perderabo (here and here) it's a really hard task. For example, try running your script as

Code:
shell < scriptname

or:

Code:
cat scriptname | shell

Actually I think these examples do not really count, since this is piping the contents of a script to a shell. Therefore the executing program/script being called is the shell itself. In other words, the part of the pipe that the executing shell is aware of does not "know" the origins of the stream of characters that it receives as its input.

This is an artificial way of calling the script and this is not what you would write the code for in my opinion.

Quote:
Originally Posted by chebarbudo
Not quite true:
Code:
~# cat /root/s
#!/bin/bash
echo "I'm a user created script stored in /root/"
which $0
~# cat /usr/local/bin/s
#!/bin/bash
echo "I'm a user created script stored in /usr/local/bin/"
which $0
~# bash s
I'm a user created script stored in /root/
/usr/local/bin/s

I think th reason this does not work is because you appear to have "." in your search path, which should not be the case, since it is a security risk. The "." should be removed from your PATH variable, which would force you to use bash ./s instead. Then the "which $0" construction should be valid I think.

S.
# 26  
Old 11-15-2008
Quote:
Originally Posted by Scrutinizer
Actually I think these examples do not really count, since this is piping the contents of a script to a shell. Therefore the executing program/script being called is the shell itself. In other words, the part of the pipe that the executing shell is aware of does not "know" the origins of the stream of characters that it receives as its input.

This is an artificial way of calling the script and this is not what you would write the code for in my opinion.
I agree

Quote:
Originally Posted by Scrutinizer
I think th reason this does not work is because you appear to have "." in your search path, which should not be the case, since it is a security risk. The "." should be removed from your PATH variable, which would force you to use bash ./s instead. Then the "which $0" construction should be valid I think.
Nope. I have no such "." in my PATH. Try it yourself and you'll see.
# 27  
Old 11-15-2008
Quote:
Originally Posted by radoulov
Could you post an example with $BASH_SOURCE that works in all the previously described cases?
$BASH_SOURCE will work in every described situation exept those pointed out by Perderabo, ie as said scrutinizer:
Quote:
Originally Posted by Scrutinizer
This is an artificial way of calling the script and this is not what you would write the code for in my opinion.

Last edited by chebarbudo; 11-15-2008 at 11:58 AM.. Reason: err
# 28  
Old 11-15-2008
Quote:
Originally Posted by chebarbudo
$BASH_SOURCE will work in every described situation exept those pointed out by Perderabo, ie as said scrutinizer:
I'm glad it fits your needs.
For me the entire discussion is theoretical (i.e. artificial).
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