Saturday, 24 August 2013

Making shell scripts robust against location they're called from

Making shell scripts robust against location they're called from

What is the best way to write a shell script that will access files
relative to it such that it doesn't matter where I call it from? "Easy"
means the easiest/recommended way that will work across different
systems/shells.
Example
Say I have a folder ~/MyProject with subfolders scripts/ and files/. In
scripts/, I have a shell script foo.sh that wants to access files in
files/:
if [ -f "../files/somefile.ext" ]; then
echo "File found"
else
echo "File not found"
fi
It'll work fine If I do cd ~/MyProject/scripts && ./foo.sh, but it will
fail with cd ~/MyProject && scripts/foo.sh.

No comments:

Post a Comment