方法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スクリプト内でスクリプトのディレクトリを取得できます。これにより、スクリプトがどのディレクトリにあるかに関係なく、ファイルやディレクトリへのパスを正しく解決することができます。