Bashスクリプトのディレクトリを取得する方法


方法1: $0とdirnameコマンドを使用する方法

#!/bin/bash
script_dir=$(dirname "$(readlink -f "$0")")
echo "スクリプトのディレクトリ: $script_dir"

この方法では、$0は現在のスクリプトのパスを表します。readlink -f "$0"は、$0へのシンボリックリンクを解決し、絶対パスを取得します。dirnameコマンドは、絶対パスからディレクトリの部分を取得します。

方法2: Bash変数BASH_SOURCEを使用する方法

#!/bin/bash
script_dir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
echo "スクリプトのディレクトリ: $script_dir"

BASH_SOURCEは、スクリプトが実行されたファイルのパスを含む配列です。${BASH_SOURCE[0]}は、現在のスクリプトのパスを表します。

方法3: PWD変数を使用する方法

#!/bin/bash
current_dir=$(cd "$(dirname "$0")" && pwd)
echo "スクリプトのディレクトリ: $current_dir"

cd "$(dirname "$0")"は、現在のスクリプトのディレクトリに移動します。pwdコマンドは、現在のディレクトリの絶対パスを取得します。

これらの方法を使用すると、Bashスクリプト内でスクリプトのディレクトリを取得できます。これにより、スクリプトがどのディレクトリにあるかに関係なく、ファイルやディレクトリへのパスを正しく解決することができます。