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

Dan*_*nny 2 linux bash shell

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

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

SCRIPTSDIR=`pwd`
Run Code Online (Sandbox Code Playgroud)

但是我通过执行sh Server/Scripts/Install.sh从root运行此脚本的人遇到了问题

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

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

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

Sla*_*ast 5

你可以得到dir

dirname $0
Run Code Online (Sandbox Code Playgroud)

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

readlink -f `dirname $0`
Run Code Online (Sandbox Code Playgroud)