Bash脚本-尝试获取脚本路径

时间:2019-01-17 02:36:56

标签: linux bash shell unix scripting

我需要获取脚本的路径。

我可以使用pwd手动执行此操作,但是在在线搜索后,我找到了以下脚本:

DIR=$( cd $(dirname $0) ; pwd)

我不知道这是什么意思。有人可以解释吗?

编辑:此脚本与该脚本不同

2 个答案:

答案 0 :(得分:1)

它标识包含脚本的目录(可能与当前工作目录不同)。

如果需要引用同一目录中的文件,通常会使用以下模式:

# contents of myscript.sh
DIR=$( cd $(dirname $0) ; pwd)
cat $DIR/some-file-next-to-my-script.txt

然后从文件系统上的任何地方

/path/to/myscript.sh

实际上将打印some-file-next-to-my-script.txt的内容。如果您一个人坚持使用pwd,则可能会在当前工作目录中查找该文件,这可能是您想要的行为,也可能不是。

取消命令:

$( cd $(dirname $0); pwd)
        ^^^^^^^^^^

标识包含$0的目录。如果您以/path/to/myscript.txt的身份调用脚本,则dirname $0的值为/path/to。如果您以./myscript.txt的身份调用它,那么dirname $0的求值结果仅为.

$( cd $(dirname $0); pwd)
^^^^^^^^^^^^^^^^^^^^    ^

像以前一样切换到目录,但关键是在 subshel​​l 中,这样就不会修改您的工作目录。

然后,最后一个pwd仅打印出当前工作目录,该目录将始终扩展为完整路径。然后,该值将存储在示例中的DIR变量中。

答案 1 :(得分:0)

DIR=$( cd $(dirname $0) ; pwd )

假设您的脚本为/home/lanzhiwang/work/py_web/multimediaapi_lab/pukep.py

$ 0是pukep.py

$ {dirname $ 0)是/ home / lanzhiwang / work / py_web / multimediaapi_lab /

cd / home / lanzhiwang / work / py_web / multimediaapi_lab /

pwd

DIR = / home / lanzhiwang / work / py_web / multimediaapi_lab /