実行ファイルが保存されている場所がわかりますか?

実行ファイルが保存されている場所がわかりますか?

実行ファイルが保存されている場所がわかりますか?

私のオープンソースプロジェクトでは、いくつかのタスクを自動化するために小さな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の答えに基づいて、上記の方法はパスを絶対パスにし(サブシェルを使用してパスにcd到達するecho$PWD

関連情報