繁体   English   中英

Shell 脚本当前目录?

[英]Shell script current directory?

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

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

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

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

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

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

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

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

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

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

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

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

echo "the PWD is : ${pwd}"

你也可以完全使用 posix shell 脚本来完成它

#!/bin/sh

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

CWD=$(get_current_directory)
echo "$CWD"

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

realpath `dirname $0`

或者使用 $(),如果你不介意的话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM