Blasco Asked: 2018-02-03 05:32:51 +0800 CST2018-02-03 05:32:51 +0800 CST 2018-02-03 05:32:51 +0800 CST 如何使用 bash 在 RedHat 6 中获取源脚本的目录 [重复] 772 我正在尝试获取我正在采购的脚本的路径。我正在执行以下操作: DIR="$(dirname "$(readlink -f "$0")")" 不过我得到 readlink: invalid option -- 'b' 我在使用 bash 的 RedHat 6 机器上。不确定我是否应该以不同的方式做到这一点。 bash shell 2 个回答 Voted Best Answer Kusalananda 2018-02-03T05:59:45+08:002018-02-03T05:59:45+08:00 使用${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 ]} Burak Talha Bolat 2018-02-03T05:43:49+08:002018-02-03T05:43:49+08:00 如果我正确理解你,这应该工作: whereami=$(pwd) echo $whereami
使用
${BASH_SOURCE[-1]}
:这是一个包含当前 shell 函数调用堆栈的源文件的数组,它的最后一个元素将是主脚本的源。
无论脚本是否来源,这都应该有效
source
。bash
您正在使用的特定版本是 4.2.1 版。4.3 版中添加了数组中的负索引(从数组末尾引用)。${BASH_SOURCE[-1]}
要获得与在 4.3 之前的版本中使用相同的效果bash
,请使用如果我正确理解你,这应该工作: