Linux 如何处理shell脚本中$PWD值的更改?

Linux 如何处理shell脚本中$PWD值的更改?,linux,shell,Linux,Shell,我有一个由工具执行的shell脚本。 当它由该工具执行时,$PWD的值由该工具设置。 但是,当我手动执行脚本时,$PWD的值是脚本的当前目录 现在我使用$PWD环境变量在脚本中定位不同的文件位置 但是,当我手动执行它时,文件路径会发生更改,并产生意外的结果 在手动或通过该工具执行脚本时,我如何处理$PWD值的更改?如果需要访问脚本本身所在的目录,可以使用bash script_dir=$(readlink -f ${0%/*}) 它获取脚本的相对路径($0),切断脚本名称并将其转换为完整路径。

我有一个由工具执行的shell脚本。 当它由该工具执行时,$PWD的值由该工具设置。 但是,当我手动执行脚本时,$PWD的值是脚本的当前目录

现在我使用$PWD环境变量在脚本中定位不同的文件位置

但是,当我手动执行它时,文件路径会发生更改,并产生意外的结果


在手动或通过该工具执行脚本时,我如何处理$PWD值的更改?如果需要访问脚本本身所在的目录,可以使用bash

script_dir=$(readlink -f ${0%/*})

它获取脚本的相对路径(
$0
),切断脚本名称并将其转换为完整路径。

您可以将PWD作为可选参数提供给脚本:如果设置,请使用它。否则,请照常工作。
PWD
通常指当前目录。如果你想让一个变量有别的意思,为什么不使用不同的变量名呢?@fedorqui在这两种情况下都是通过手动或通过工具执行脚本值$PWD,但它是不同的:(查看一些代码会很有用,所以我们可以猜测我们可以在哪里修改一些东西使其工作。