linux Shell脚本当前目录?

eit6fx6z  于 2023-02-18  发布在  Linux
关注(0)|答案(7)|浏览(151)

shell脚本的当前目录是什么?是我调用它的当前目录?还是脚本所在的目录?

0pizxfdo

0pizxfdo1#

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

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

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

iyzzxitl2#

大多数的答案会告诉你当前的路径,并且是上下文相关的。为了从任何目录运行你的脚本,使用下面的代码片段。

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

通过切换子shell中的目录,我们就可以调用pwd并获得脚本的正确路径,而不管上下文如何。
然后可以将$DIR用作"$DIR/path/to/file"

t3psigkw

t3psigkw3#

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

yyhrrdl8

yyhrrdl84#

你可以在运行pwd的时候检查它的输出,这样会打印出你当前所在的目录**,而不是脚本。
如果你的脚本没有切换目录,它会打印你**运行它的目录。

laik7k3q

laik7k3q5#

加上这条评论,我认为最优化和逻辑的方式是:

realpath `dirname $0`

realpath $(dirname $0)
mzillmmw

mzillmmw6#

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

echo "the PWD is : ${PWD}"
5m1hhzi4

5m1hhzi47#

你也可以完全使用posixshell脚本来完成

#!/bin/sh

get_current_directory() {
    current_file="${PWD}/${0}"
    echo "${current_file%/*}"
}

CWD=$(get_current_directory)
echo "$CWD"

相关问题