I have a script like this:
#!/bin/csh
echo "This is the main programme"
./printsth
I want to call the script printsth
from within this script using relative paths. Is there a way to do so? By relative paths I mean path relative to where my calling script is.
To use full path you type sh /home/user/scripts/someScript . sh /path/to/file is different from /path/to/file . sh runs /bin/sh which is symlinked to /bin/dash . Just making something clear on the examples you see on the net, normally you see sh ./somescript which can also be typed as `sh /path/to/script/scriptitself'.
$(command) or `command` Bash performs the expansion by executing command and replacing the com- mand substitution with the standard output of the command, with any trailing newlines deleted. Embedded newlines are not deleted, but they may be removed during word splitting.
You can refer to the current working directory with $cwd
. So if you want to call printsth
with a path relative to the current working directory, start the line with $cwd
.
For example, if you want to call the printsth
in the current directory, say:
$cwd/printsth
If you want to call the printsth
one directory above:
$cwd/../printsth
Be sure it's a csh
script though (ie. the first line is #!/bin/csh
). If it's an sh
or bash
script, you need to use $PWD
(for 'present working directory'), not $cwd
.
EDIT:
If you want a directory relative to the script's directory, not the current working directory, then you can do this:
setenv SCRIPTDIR `dirname $0`
$SCRIPTDIR/printsth
That will set $SCRIPTDIR
to the same directory as the original script. You can then build paths relative to that.
Running script as ./printsth
won't work always, as relative path would depend on directory from which the main script has been run.
One solution would be to make sure that we enter the directory where the script is present, then run it:
cd -P -- "$(dirname -- "$0")"
./printsth
For more examples, see: How to set current working directory to the directory of the script?
See also: How to convert absolute path into relative path?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With