-
-
Notifications
You must be signed in to change notification settings - Fork 566
Bundling shell scripts
probonopd edited this page Apr 20, 2013
·
1 revision
Shell scripts occasionally hardcode paths to other files. This will break if these other files are relocated. Hence, you should refer to outside files always relative to the position of the shell script itself. This can be achieved with the following code:
#!/bin/sh
HERE=$(dirname $(readlink -f "${0}"))
echo "${HERE}"
This will always return the absolute path to the directory the script is located in, regardless of how it was called.
Assume you have a script /usr/bin/foo which wants to call /usr/bin/bar.
To make it relocateable, you need to change /usr/bin/foo so that instead of calling
/usr/bin/bar --dosomething
it contains
"${HERE}/bar" --dosomething