我正在写一个Bash脚本。我需要当前工作目录始终是脚本所在的目录。
默认行为是脚本中的当前工作目录是我从中运行它的shell的目录,但我不想要这种行为。
我正在写一个Bash脚本。我需要当前工作目录始终是脚本所在的目录。
默认行为是脚本中的当前工作目录是我从中运行它的shell的目录,但我不想要这种行为。
当前回答
如果你只是需要打印当前的工作目录,那么你可以这样做。
$ vim test
#!/bin/bash
pwd
:wq to save the test file.
给予执行权限:
chmod u+x test
然后通过./test执行脚本,然后可以看到当前的工作目录。
其他回答
cd "$(dirname "${BASH_SOURCE[0]}")"
很容易。它的工作原理。
cd "`dirname $(readlink -f ${0})`"
我吃了这个,它起作用了。
#!/bin/bash
cd "$(dirname "$0")"
CUR_DIR=$(pwd)
获取脚本的真实路径
if [ -L $0 ] ; then
ME=$(readlink $0)
else
ME=$0
fi
DIR=$(dirname $ME)
(这是对我这里相同问题的回答:获取脚本执行的目录的名称)
以下也适用:
cd "${0%/*}"
语法在这个StackOverflow的答案中有详细的描述。