web-dev-qa-db-ja.com

絶対パス経由でbashスクリプトを実行する方法は?

ファイルがあります:

/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

任意のフォルダーから絶対パスを指定してコマンドを実行し、スクリプトを実行したい。

3
Danylo Volokh

任意のフォルダーから絶対パスを指定してコマンドを実行し、スクリプトを実行したい。

絶対パスで実行しようとすると、エラーが発生します。

/test/test_bash_script.sh 
-bash: /test/test_bash_script.sh: No such file or directory

ファイル/test/test_bash_script.shは存在しないため、実行できません。

  • 絶対パスは、ルートディレクトリからのファイルまたはディレクトリの場所を指定するものとして定義されます(/)。

  • /testは、ディレクトリ/testが存在しないため、絶対パスにすることはできません(ホームディレクトリのサブディレクトリです)。

次の2つの選択肢があります。

  1. スクリプトへの正しい絶対パスを使用します。

    /Users/danylo.volokh/test/test_bash_script.sh
    
  2. ホームディレクトリに基づくパスを使用します。

    ~/test/test_bash_script.sh
    

絶対パスとは何ですか?

絶対パスは、ルートディレクトリからのファイルまたはディレクトリの場所を指定するものとして定義されます(/)。

ソース Linux/Unixでの絶対パスと相対パス

スラッシュは常に名前のコンポーネントを分離するため、パス名がスラッシュで始まる場合、名前のない「ROOT」ディレクトリがパス名の始まりと見なされます。 ROOTディレクトリには名前がありません。これは、Unixファイルシステムツリー全体のルートです。

スラッシュで始まるパス名は、常にROOTで始まるため、絶対パス名と呼ばれます。

名前のないディレクトリについて話すのは難しいので、通常(誤って)ROOTディレクトリには "/"(スラッシュ)という名前を使用します。パス名の名前コンポーネントにスラッシュを含めることはできず、スラッシュは名前コンポーネントを分離するため、これは誤りです。 ROOTに「/」を使用する場合、スラッシュ自体ではなく、「スラッシュの左側にある名前のないROOTディレクトリ」を意味することを理解してください。

ソース nix/Linuxパス名(絶対、相対、ドット、ドットドット)

15
DavidPostill

絶対パスは/Users/danylo.volokh/test/test_bash_script.shではなく/test/test_bash_script.shです。バッシュはその時です。

2