我正在尝试获取我正在采购的脚本的路径。我正在执行以下操作:
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