如何使用 bash 获取 RedHat 6 中源脚本的目录

如何使用 bash 获取 RedHat 6 中源脚本的目录

我正在尝试获取我正在采购的脚本的路径。我正在执行以下操作:

DIR="$(dirname "$(readlink -f "$0")")"

尽管如此我得到

readlink: invalid option -- 'b'

我在 RedHat 6 机器上使用 bash。不确定我是否应该以不同的方式做到这一点。

答案1

使用${BASH_SOURCE[-1]}

script_dir=$( dirname "$( readlink -f "${BASH_SOURCE[-1]}" )" )

这是一个包含当前 shell 函数调用堆栈的源文件的数组,其中的最后一个元素将是主脚本的源代码。

无论脚本是否来源,这都应该有效source

bash您使用的特定版本是版本 4.2.1。数组中的负索引(从数组末尾引用)是在 4.3 版本中添加的。要获得与${BASH_SOURCE[-1]}4.3 之前版本中使用相同的效果bash,请使用

${BASH_SOURCE[ ${#BASH_SOURCE[@]} - 1 ]}

答案2

如果我正确理解你,这应该有效:

whereami=$(pwd)
echo $whereami

相关内容