从其他位置运行bash脚本,但引用脚本所在的位置

时间:2011-10-25 20:02:44

标签: linux bash shell

我曾经写过一个脚本,可以在Linux中为那些不喜欢命令行的人做一些简单的安装程序,但似乎他们从一个位置(例如root)运行脚本。所以我有一个解决方案,但试图找出如何引用文件的位置。

实施例。 我在一个文件夹/ root / Server / Scripts /中有一个名为Install.sh的脚本,它使用以下内容引用自身:

SCRIPTSDIR=`pwd`

但是我通过执行sh Server / Scripts / Install.sh来解决从root运行此脚本的问题

我如何制作SCRIPTS =引用文件所在位置的东西,而不是它的运行位置?

谢谢,询问您是否需要更多信息!

编辑:所有答案都很好,我打算把我需要的绝对路径。

3 个答案:

答案 0 :(得分:5)

你可以用

获得目录
dirname $0

如果使用相对路径调用脚本,则dirname也将返回相对路径。如果你想出于某种原因解决它,你可以做

readlink -f `dirname $0`

答案 1 :(得分:1)

您可以使用:

SCRIPTDIR=$(dirname $0)

如果您需要绝对路径,请尝试:

cd $(dirname $0)
SCRIPTDIR=$(pwd)
cd -

答案 2 :(得分:1)

您可以添加以下内容:

fullscriptpath=$( dirname $0 )