我在其中一个脚本中找到了以下内容:
SCRIPT_LOCATION=$(pwd)
SCRIPT_DIRECTORY="$(dirname ${SCRIPT_LOCATION})"
CONFIG_FILE="${SCRIPT_DIRECTORY}/.saved-settings"
这个想法基本上是:然后脚本检查该文件是否存在;并加载保存的设置。
似乎运行pwd和dirname ......并没有添加任何值。上面的比
更好CONFIG_FILE="./.saved-settings"
如果是这样 - 以哪种方式?
答案 0 :(得分:2)
之间的一个语义差异
SCRIPT_LOCATION="$(pwd)"
SCRIPT_DIRECTORY="$(dirname ${SCRIPT_LOCATION})"
CONFIG_FILE="${SCRIPT_DIRECTORY}/.saved-settings"
和
CONFIG_FILE="../.saved-settings"
(注意两个点)是当前目录是符号链接的情况。在这种情况下,dirname
会将路径视为字符串并删除其中的最后一个组件(例如/foo/bar/baz
将变为/foo/bar
),但..
运算符将占用您到符号链接目标的父目录。因此,如果当前目录为/foo/bar/baz
,这是/aaa/bbb/ccc
的符号链接,则第一个代码段将返回/foo/bar
,而第二个代码段将返回/aaa/bbb
。