使shell'source'文件使用相对路径

Luc*_*jer 3 shell

我有文件:myvars

MONO_PREFIX=/opt/mono
export MONO_PATH=$MONO_PREFIX/lib/mono/2.0
Run Code Online (Sandbox Code Playgroud)

我通过调用"使用"它:

source myvars
Run Code Online (Sandbox Code Playgroud)

我想改为/opt/mono相对于myvars文件的位置而不是绝对的.我怎么能这样做?

Pau*_*ce. 8

这应该在Bash中有效:

MONO_PREFIX="${BASH_SOURCE[0]%/*}/subdir"
Run Code Online (Sandbox Code Playgroud)

这应该在ksh中工作:

MONO_PREFIX="${.sh.file%/*}/subdir"
Run Code Online (Sandbox Code Playgroud)

这是为zsh:

MONO_PREFIX="${funcsourcetrace[1]%/*}/subdir"
Run Code Online (Sandbox Code Playgroud)

这些将指向源文件所在目录下的名为"subdir"的目录.