我的bash脚本中有以下代码。现在我想在POSIX中使用它。那么如何转换呢?谢谢。
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )"
答案 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-current-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
,看看我们可以获得的所有奇妙信息,然后我们就从那里走了。
是的!