making a shell 'source' file use relative paths
shell
Solution
This should work in Bash:
MONO_PREFIX="${BASH_SOURCE[0]%/*}/subdir"
This should work in ksh:
MONO_PREFIX="${.sh.file%/*}/subdir"
And this is for zsh:
MONO_PREFIX="${funcsourcetrace[1]%/*}/subdir"
These will point to a directory called "subdir" below the directory where the file being sourced resides.
Problem
I have the file: myvars ``` MONO_PREFIX=/opt/mono export MONO_PATH=$MONO_PREFIX/lib/mono/2.0 ``` I "use" it, by calling: ``` source myvars ``` I want to change `/opt/mono` to be relative to the location of the myvars file instead of being absolute. How could I do this?