ファイルがあります:
/Users/danylo.volokh/test/test_bash_script.sh
コンテンツは非常にシンプルです:
#!/usr/bin/env bash
echo "-- print from script"
私は「danylo.volokh」フォルダにいます
このコマンドは正常に実行されます:
Danilos-MacBook-Pro:~ danylo.volokh$ test/test_bash_script.sh
-- print from script
しかし、絶対パスで実行しようとすると、エラーが発生します:
Danilos-MacBook-Pro:~ danylo.volokh$ /test/test_bash_script.sh
-bash: /test/test_bash_script.sh: No such file or directory
任意のフォルダーから絶対パスを指定してコマンドを実行し、スクリプトを実行したい。
絶対パスで実行しようとすると、エラーが発生します。
/test/test_bash_script.sh
-bash: /test/test_bash_script.sh: No such file or directory
ファイル/test/test_bash_script.sh
は存在しないため、実行できません。
絶対パスは、ルートディレクトリからのファイルまたはディレクトリの場所を指定するものとして定義されます(/
)。
/test
は、ディレクトリ/test
が存在しないため、絶対パスにすることはできません(ホームディレクトリのサブディレクトリです)。
次の2つの選択肢があります。
スクリプトへの正しい絶対パスを使用します。
/Users/danylo.volokh/test/test_bash_script.sh
ホームディレクトリに基づくパスを使用します。
~/test/test_bash_script.sh
絶対パスは、ルートディレクトリからのファイルまたはディレクトリの場所を指定するものとして定義されます(
/
)。
スラッシュは常に名前のコンポーネントを分離するため、パス名がスラッシュで始まる場合、名前のない「ROOT」ディレクトリがパス名の始まりと見なされます。 ROOTディレクトリには名前がありません。これは、Unixファイルシステムツリー全体のルートです。
スラッシュで始まるパス名は、常にROOTで始まるため、絶対パス名と呼ばれます。
名前のないディレクトリについて話すのは難しいので、通常(誤って)ROOTディレクトリには "/"(スラッシュ)という名前を使用します。パス名の名前コンポーネントにスラッシュを含めることはできず、スラッシュは名前コンポーネントを分離するため、これは誤りです。 ROOTに「/」を使用する場合、スラッシュ自体ではなく、「スラッシュの左側にある名前のないROOTディレクトリ」を意味することを理解してください。
絶対パスは/Users/danylo.volokh/test/test_bash_script.sh
ではなく/test/test_bash_script.sh
です。バッシュはその時です。