Bash スクリプトのディレクトリを見つける
多くのスクリプト シナリオでは、Bash スクリプトが配置されているディレクトリを知っておくことが重要です。この知識により、スクリプトのディレクトリに移動し、そのディレクトリ内のファイルを効果的に操作できるようになります。
スクリプトを使用して別のアプリケーションを起動する場合でも、特定のファイルに対して操作を実行する場合でも、スクリプトのディレクトリを見つけることで、スムーズで予測可能な実行が保証されます。このガイドでは、このタスクを実行する方法を説明します。
指示 | 説明 |
---|---|
${BASH_SOURCE[0]} | Bash で実行されるスクリプトのフルパスを指します。 |
cd $(dirname ...) | 現在のディレクトリを、指定されたファイルまたはスクリプトの親ディレクトリに変更します。 |
pwd | 現在の作業ディレクトリを出力します。 |
realpath() | Python で指定されたファイル名の正規パスを返します。 |
sys.argv[0] | Python スクリプトの呼び出しに使用されたスクリプト名が含まれます。 |
os.chdir() | 現在の作業ディレクトリを Python で指定されたパスに変更します。 |
os.system() | Python のサブシェルでコマンドを実行します。 |
ls -al | 現在のディレクトリ内のすべてのファイルとディレクトリを詳細情報とともに一覧表示します。 |
スクリプトディレクトリの場所について
提供されているスクリプトは、Bash スクリプトが配置されているディレクトリを特定する方法を示しています。 Bash スクリプトの例では、コマンド ${BASH_SOURCE[0]} はスクリプトのパスを取得するために使用されますが、 cd $(dirname ...) 作業ディレクトリをスクリプトのディレクトリに変更します。の pwd コマンドは現在の作業ディレクトリを出力し、変更を検証します。これは、スクリプトの場所からアプリケーションを起動し、すべての操作が正しいコンテキスト内で行われるようにするために不可欠です。
Python スクリプトの例では、 os.path.dirname(os.path.realpath(sys.argv[0])) スクリプトのディレクトリを取得し、 os.chdir() 作業ディレクトリを変更します。の os.system() コマンドは別のアプリケーションを実行するために使用されます。高度な Bash スクリプトの例では、次を使用してこれらのテクニックを組み合わせています。 ls -al スクリプトのディレクトリ内のファイルを一覧表示します。このアプローチは、ファイルの場所に応じてファイルを管理または操作する必要があるスクリプトに役立ちます。
Bash スクリプトのディレクトリを決定する
Bash スクリプトの例
# Method to get the directory of the script
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Print the directory
echo "The script is located in: $DIR"
# Change to the script's directory
cd "$DIR"
# Execute another application
./application
作業ディレクトリをスクリプトの場所に変更する
Python スクリプトの例
import os
import sys
def get_script_directory():
return os.path.dirname(os.path.realpath(sys.argv[0]))
# Get the script's directory
script_dir = get_script_directory()
# Print the directory
print(f"The script is located in: {script_dir}")
# Change to the script's directory
os.chdir(script_dir)
# Execute another application
os.system("./application")
シェルスクリプトでのスクリプトのディレクトリの検索
高度な Bash スクリプトの例
#!/bin/bash
# Resolve the directory of the script
SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
# Print the resolved directory
echo "Script directory is: $SCRIPT_DIR"
# Move to the script's directory
cd "$SCRIPT_DIR"
# Example operation in script's directory
echo "Listing files in script directory:"
ls -al
# Launch another application from the script directory
./application
スクリプト ディレクトリを検索するための追加の方法
スクリプトが存在するディレクトリを見つけるもう 1 つの便利な方法には、環境変数を利用する方法があります。一部のシステムでは、 $0 変数には、現在実行中のスクリプトへのパスが含まれます。これを次のようなコマンドと組み合わせることで、 dirname そして readlinkを使用すると、より移植性の高い方法でスクリプトのディレクトリを決定できます。これは、スクリプトが別の環境で実行されたり、シンボリックリンクを通じて実行されたりする場合に特に便利です。
使用する readlink シンボリック リンクを実際のファイル パスに解決できるため、ディレクトリを正確に決定できます。例えば、 DIR="$(dirname "$(readlink -f "$0")")" シンボリックリンクであっても、スクリプトのディレクトリが生成されます。これらの方法を理解すると、スクリプト ツールキットの幅が広がり、より堅牢で適応性のあるスクリプトの展開が可能になります。
よくある質問と回答
- Bash でスクリプトのディレクトリを取得するにはどうすればよいですか?
- 使用 ${BASH_SOURCE[0]} と組み合わせ dirname そして pwd をクリックしてディレクトリを見つけます。
- スクリプト ディレクトリを決定することが重要なのはなぜですか?
- これにより、特に相対ファイル パスを扱う場合に、スクリプト内の操作が正しいコンテキストで行われるようになります。
- 環境変数を使用してスクリプト ディレクトリを見つけることはできますか?
- はい、次のような変数です $0 そして次のようなコマンド readlink スクリプトの場所を特定するのに役立ちます。
- どういうことですか readlink -f する?
- すべてのシンボリック リンクを最終的な宛先に解決し、絶対パスを提供します。
- どうやって sys.argv[0] Python スクリプトで作業しますか?
- これには、Python スクリプトの呼び出しに使用されるスクリプト名が含まれており、スクリプトのディレクトリを決定するのに役立ちます。
- は os.path.realpath() Python スクリプトでは必要ですか?
- はい、指定されたファイル名の正規パスを返します。これは絶対パスを決定するのに役立ちます。
- これらのメソッドは他のスクリプト言語でも使用できますか?
- 詳細は異なる場合がありますが、同様の概念を他の言語に適用して、スクリプトの場所を決定できます。
スクリプト ディレクトリの場所に関する最終的な考え
Bash スクリプトが存在するディレクトリを見つけることは、スクリプトの信頼性と正しいファイル管理にとって不可欠です。次のようなコマンドを使用することで、 ${BASH_SOURCE[0]}、 dirname、 そして pwdを使用すると、スクリプトが意図したディレクトリ内で動作することを確認できます。このアプローチは Bash で効果的であるだけでなく、次を使用して Python スクリプトにも適用できます。 os.path.realpath() そして sys.argv[0]。これらの技術は、実行環境に関係なく、ファイルを管理し、アプリケーションを正確に起動できる堅牢なスクリプトを作成するのに役立ちます。