如何在POSIX中获取脚本目录?

时间:2015-04-23 18:54:59

标签: bash posix sh

我的bash脚本中有以下代码。现在我想在POSIX中使用它。那么如何转换呢?谢谢。

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )"

2 个答案:

答案 0 :(得分:0)

@City回应了

DIR=$( cd -P -- "$(dirname -- "$(command -v -- "$0")")" && pwd -P )

的工作原理。我也用它了 我在https://stackoverflow.com/questions/760110/can-i-get-the-absolute-path-to-the-cu‌​rrent-script-in-kornshell找到了命令。

答案 1 :(得分:0)

if      OLDPWD=/dev/fd/0 \
        cd - && ls -lLidFH ?
then    cd . <8
fi      </proc/self/fd 8<. 9<$0

有。应该可以让您通过一些魔术链接来更改Directpry作为文件描述符。

$OLDPWD之前设置cd会在一个更改目录的持续时间内导出值(注意:cd可能对hash表有残留影响,但是我知道,男性唯一真正能充分利用这些东西的唯一sh是凯文(Kevin)竞技运动员-自赫伯特·许以来-dash,也许还有bsd的东西,但是我该怎么办知道吗?),但不会因更改而结转任何cd出口。

因此,$OLDPWD实际上并没有改变,并且如果它有任何价值,那么一切都照原样。由于第一个$PWD导致cd发生更改,并且值变为/dev/fd/0,该值指向/proc/self/fd,其中,用于处理的文件描述符列表应位于{ {1}},以包含.上的$0

所以我们做一个./2,看看我们可以获得的所有奇妙信息,然后我们就从那里走了。

是的!