shell脚本的当前目录是什么?是我调用它的当前目录?还是脚本所在的目录?
0pizxfdo1#
如前所述,位置将是脚本被调用的位置。如果你希望脚本引用它的安装位置,这很简单。下面是一个代码片段,它将打印PWD和安装目录:
#!/bin/bash echo "Script executed from: ${PWD}" BASEDIR=$(dirname $0) echo "Script location: ${BASEDIR}"
iyzzxitl2#
大多数的答案会告诉你当前的路径,并且是上下文相关的。为了从任何目录运行你的脚本,使用下面的代码片段。
DIR="$( cd "$( dirname "$0" )" && pwd )"
通过切换子shell中的目录,我们就可以调用pwd并获得脚本的正确路径,而不管上下文如何。然后可以将$DIR用作"$DIR/path/to/file"
pwd
$DIR
"$DIR/path/to/file"
t3psigkw3#
shell脚本的当前(初始)目录是您从中调用脚本的目录。
yyhrrdl84#
你可以在运行pwd的时候检查它的输出,这样会打印出你当前所在的目录**,而不是脚本。如果你的脚本没有切换目录,它会打印你**运行它的目录。
laik7k3q5#
加上这条评论,我认为最优化和逻辑的方式是:
realpath `dirname $0`
或
realpath $(dirname $0)
mzillmmw6#
要打印当前工作目录,即pwd,只需键入如下命令:
echo "the PWD is : ${PWD}"
5m1hhzi47#
你也可以完全使用posixshell脚本来完成
#!/bin/sh get_current_directory() { current_file="${PWD}/${0}" echo "${current_file%/*}" } CWD=$(get_current_directory) echo "$CWD"
7条答案
按热度按时间0pizxfdo1#
如前所述,位置将是脚本被调用的位置。如果你希望脚本引用它的安装位置,这很简单。下面是一个代码片段,它将打印PWD和安装目录:
iyzzxitl2#
大多数的答案会告诉你当前的路径,并且是上下文相关的。为了从任何目录运行你的脚本,使用下面的代码片段。
通过切换子shell中的目录,我们就可以调用
pwd
并获得脚本的正确路径,而不管上下文如何。然后可以将
$DIR
用作"$DIR/path/to/file"
t3psigkw3#
shell脚本的当前(初始)目录是您从中调用脚本的目录。
yyhrrdl84#
你可以在运行
pwd
的时候检查它的输出,这样会打印出你当前所在的目录**,而不是脚本。如果你的脚本没有切换目录,它会打印你**运行它的目录。
laik7k3q5#
加上这条评论,我认为最优化和逻辑的方式是:
或
mzillmmw6#
要打印当前工作目录,即pwd,只需键入如下命令:
5m1hhzi47#
你也可以完全使用posixshell脚本来完成