我需要获取脚本的路径。
我可以使用pwd
手动执行此操作,但是在在线搜索后,我找到了以下脚本:
DIR=$( cd $(dirname $0) ; pwd)
我不知道这是什么意思。有人可以解释吗?
编辑:此脚本与该脚本不同
答案 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)
^^^^^^^^^^^^^^^^^^^^ ^
像以前一样切换到目录,但关键是在 subshell 中,这样就不会修改您的工作目录。
然后,最后一个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 /