如何从另一个路径运行脚本,并知道脚本的路径?

The*_*ent 8 shell scripting path shell-script

我需要运行一个脚本来访问它所在路径中的文件。

例如:我有脚本/home/me/folder/script.sh,这个脚本将访问文件/home/me/folder/myfile. 由于文件在脚本的同一路径中,我只使用 name myfile,而不是完整路径。

但是,如果我从 运行它/tmp/,例如:

/tmp$ /home/me/folder/script.sh
Run Code Online (Sandbox Code Playgroud)

它给了我:

myfile: No such file or directory
Run Code Online (Sandbox Code Playgroud)

那么,我如何在脚本中说该文件与脚本本身在同一路径中?

gee*_*aur 9

您无法在所有情况下都知道,但通常(并非总是)当您按路径运行脚本而不是让 shell 搜索时$PATH,脚本的路径将在$0. 然后您可以使用dirname "$0"${0%/*}来获取路径。


ale*_*lex 8

怎么样$(dirname "$0")/myfile