gpt4 book ai didi

linux - 如何在shell脚本中扩展相对路径

转载 作者:IT老高 更新时间:2023-10-28 12:38:50 27 4
gpt4 key购买 nike

我正在编写一个脚本来使用 bash 在 linux 2.6 上设置环境变量。所以脚本包含如下命令:

export SRC_DIR=..
export LIBPATH=${SRC_DIR}/lib

问题是,当我尝试执行 echo $LIBPATH 时,它显示“../lib”,而不是将 SRC_DIR 扩展为完整路径。我真的希望脚本打印/home/x/lib 之类的东西,而不是 ../lib。

更新脚本应将 SRC_DIR 评估为从脚本位置向上的一个目录,而不是调用脚本的当前目录

最佳答案

在 Subshel​​l 中更改目录

您可以使用一个小技巧从相对路径获取绝对路径,而无需更改当前工作目录。诀窍是移动到子shell 中的相对路径,然后展开工作目录。例如:

export SRC_DIR=$(cd ..; pwd)

来自脚本而不是调用目录的相对路径

要从脚本位置更改为相对路径,而不是当前工作目录,您可以使用 parameter expansiondirname 实用程序。我更喜欢 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)

关于linux - 如何在shell脚本中扩展相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11621639/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com