我正在编写一个脚本来使用 bash 在 linux 2.6 上设置环境变量。
因此该脚本包含如下命令:
export SRC_DIR=..
export LIBPATH=${SRC_DIR}/lib
问题是,当我尝试 echo $LIBPATH 时,它显示“../lib”,而不是将 SRC_DIR 扩展为完整路径。我真的希望脚本能够打印 /home/x/lib 之类的内容,而不是 ../lib。
更新
脚本应将 SRC_DIR 评估为脚本位置向上的一个目录,而不是调用脚本的当前目录
在子shell中更改目录
您可以使用一个小技巧从相对路径获取绝对路径,而无需更改当前工作目录。诀窍是移动到子 shell 中的相对路径,然后展开工作目录。例如:
export SRC_DIR=$(cd ..; pwd)
来自脚本的相对路径而不是调用目录
要从脚本位置更改为相对路径,而不是当前工作目录,您可以使用参数扩展 http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion or the dirname公用事业。我更喜欢dirname,因为它更明确一点。这是两个例子。
# Using /usr/bin/dirname.
export SRC_DIR=$(cd "$(dirname "$0")/.."; pwd)
# Using the "remove matching suffix pattern" parameter expansion.
export SRC_DIR=$(cd "${0%/*}/.."; pwd)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)