Shell脚本当前目录?

Suz*_*ioc 44 linux directory working-directory sh

什么是shell脚本的当前目录?我这个目前的目录,我打电话给它?或者脚本所在的这个目录?

krg*_*krg 98

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

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

BASEDIR=$(dirname $0)
echo "Script location: ${BASEDIR}"
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是因为您当前的工作目录是“/home/user”并且您通过“scripts/x.sh”调用了脚本。因此,脚本内的“$0”值为“scripts/x.sh”。为了获取脚本的绝对路径,可以使用`BASEDIR=$(cd $(dirname $0) && pwd)` (2认同)

saa*_*ada 27

大多数答案为您提供当前路径并且对上下文敏感.要从任何目录运行脚本,请使用以下代码段.

DIR="$( cd "$( dirname "$0" )" && pwd )"
Run Code Online (Sandbox Code Playgroud)

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

然后你可以使用$DIRas"$DIR/path/to/file"


小智 17

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


key*_*ser 8

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

如果您的脚本没有切换目录,它将打印您运行它的目录.


Sas*_*Sas 7

添加到此评论中,我认为最优化和逻辑的方式是:

realpath `dirname $0`
Run Code Online (Sandbox Code Playgroud)

或者

realpath $(dirname $0)
Run Code Online (Sandbox Code Playgroud)