77

shell脚本的当前目录是什么?我从哪个当前目录调用它?或者脚本所在的这个目录?

4

5 回答 5

154

如前所述,该位置将是调用脚本的位置。如果您希望脚本引用它的安装位置,这很简单。下面是一个将打印 PWD 和安装目录的片段:

#!/bin/bash
echo "Script executed from: ${PWD}"

BASEDIR=$(dirname $0)
echo "Script location: ${BASEDIR}"

你不客气

于 2012-10-06T17:05:28.143 回答
47

大多数答案为您提供当前路径并且是上下文相关的。为了从任何目录运行您的脚本,请使用以下代码段。

DIR="$( cd "$( dirname "$0" )" && pwd )"

通过在子 shell 中切换目录,我们可以调用pwd并获取脚本的正确路径,而不管上下文如何。

然后,您可以$DIR用作"$DIR/path/to/file"

于 2013-12-06T22:32:11.063 回答
20

shell 脚本的当前(初始)目录是您从中调用脚本的目录。

于 2012-03-27T13:03:25.937 回答
8

您可以通过检查pwd运行时的输出来自己执行此操作。这将打印您当前所在的目录。不是剧本。

如果您的脚本不切换目录,它将打印您从中运行它的目录。

于 2012-03-27T12:59:52.973 回答
2

要打印当前的工作目录,即 pwd,只需键入如下命令:

echo "the PWD is : ${pwd}"
于 2019-10-24T07:01:39.843 回答