可执行文件可以知道它存储在哪里吗?

可执行文件可以知道它存储在哪里吗?

可执行文件可以知道它存储在哪里吗?

对于我的开源项目,我编写了一个小型 bash 脚本来自动执行一些操作。该脚本位于项目的根目录,并对下面的所有文件执行其任务。人们将项目文件放在自己的计算机上,位于他们最喜欢的路径中,因此我不能只cd /home/nico/projects/theproject在脚本的开头进行硬编码。我不想强迫人们cd在执行之前每次都手动进入项目目录。我希望人们能够使用 Gnome 快捷方式来启动脚本。为此,脚本需要知道其自身的存储位置。

答案1

#! /bin/bash
echo I am located in $(dirname "$0")
cd "$(dirname "$0")"

请注意,这可能是相对路径。

答案2

#! /bin/bash
w=$(cd "$(dirname "$0")" && echo "$PWD")
echo I am located in "$w"

为了构建 cjm 的答案,上面的内容将使路径绝对化(通过使用到那里的子shellcdecho$PWD

相关内容