実行ファイルが保存されている場所がわかりますか?
私のオープンソースプロジェクトでは、いくつかのタスクを自動化するために小さな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