我正在编写一个脚本来使用 bash 在 linux 2.6 上设置环境变量。 所以脚本包含如下命令:
export SRC_DIR=..
export LIBPATH=${SRC_DIR}/lib
问题是,当我尝试执行 echo $LIBPATH 时,它显示“../lib”,而不是将 SRC_DIR 扩展为完整路径。我真的希望脚本打印/home/x/lib 之类的东西,而不是 ../lib。
更新 脚本应将 SRC_DIR 评估为从脚本位置向上的一个目录,而不是调用脚本的当前目录
最佳答案
您可以使用一个小技巧从相对路径获取绝对路径,而无需更改当前工作目录。诀窍是移动到子shell 中的相对路径,然后展开工作目录。例如:
export SRC_DIR=$(cd ..; pwd)
要从脚本位置更改为相对路径,而不是当前工作目录,您可以使用 parameter expansion或 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)
https://stackoverflow.com/questions/11621639/