代码之家  ›  专栏  ›  技术社区  ›  Lucas Meijer

使用相对路径生成shell“源”文件

  •  3
  • Lucas Meijer  · 技术社区  · 15 年前

    我有文件:myvars

    MONO_PREFIX=/opt/mono
    export MONO_PATH=$MONO_PREFIX/lib/mono/2.0
    

    我“使用”它,打电话给:

    source myvars
    

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

    1 回复  |  直到 15 年前
        1
  •  7
  •   Dennis Williamson    15 年前

    这在bash中应该有效:

    MONO_PREFIX="${BASH_SOURCE[0]%/*}/subdir"
    

    这在ksh中应该有效:

    MONO_PREFIX="${.sh.file%/*}/subdir"
    

    这是给zsh的:

    MONO_PREFIX="${funcsourcetrace[1]%/*}/subdir"
    

    它们将指向源文件所在目录下名为“subdir”的目录。