最近、人に説明する機会があったので備忘として残します。
そもそも、それは何か
「パスを通す」(Pathを通す)とは、特定のディレクトリやファイルをプログラムやシステムが認識できるようにすることを指します。
これにより、プログラムがそのリソースにアクセスできるようになります。
つまり、「利用したいデータはどこにあるよ!ここから参照してね!」ということをシステムに対して明示してあげることになります。
パスの指定方法
絶対パス(Absolute Path)
絶対パスは、ルートディレクトリ(/)から始まる完全なパスを指定する方法です。
指定されたパスは、現在の作業ディレクトリに関係なく、常に同じ場所を示します。
例:pwd で以下の結果が出たとします。
/home/user/documents
この配下にconfig.jsonがあったとします。
その場合参照させるには、/home/user/documents/config.json と参照させることが、絶対パスと言います。
- メリットと用途
コード内にファイルやディレクトリの位置を明確に指定するため、スクリプトやプログラムの可読性が高い。
相対パスでは参照できない、他のディレクトリに存在するファイルやリソースを指定する場合に使用します。
- 注意点
参照先を明示するので、ディレクトリ名の変更があった際には動かなくなる。
別環境に持っていくと参照できないことがあり、使い回しがしづらい。
Rootのポイント
ルートディレクトリは、二つの文脈で利用される用語です。
- Linuxファイルシステムの文脈では、「/」をルートディレクトリと言います。
例:/home/user/documents/file.txt
- アプリケーションの文脈では、プロジェクトの最上位ディレクトリのことを指します。
例:npx create-react-app sample-app --template typescript
で作成されたプロジェクトでは、sample-app
がルートディレクトリに当たります
相対パス(Relative Path)
相対パスは、現在の作業ディレクトリを基準として、目的のファイルやディレクトリの場所を指定する方法です。
「.」(ドット)は現在のディレクトリを、「..」(ドットドット)は上階層のディレクトリを表します。
EX:例えば、以下のようなディレクトリ構造があったとします。
hoge
└─ hoge-setting
└─ setting.json
├─ hoge-app-1
└─ hoge-app-2
hoge-app-1
のディレクトリからsetting.json
を指定するには、../hoge-setting/setting.json
のように記述します。
なお、もっと上を参照する場合には../../../
のように記述することも可能です。
この記述の場合3個上の階層を指します。
また、./対象ファイル
のような形式で記述することで、同一階層にあるファイルも参照できます。
- メリットと用途
現在の作業ディレクトリを基準として指定するため、フォルダ名の変更が発生しても動く。
他環境で使いまわすときに便利。
- 注意点
複雑なディレクトリ構造の場合、相対パスが長くなり、可読性が低くなる。
現在の作業ディレクトリを基準として指定されるため、スクリプトやプログラムの実行位置に注意が必要。
チルダ(~)を使用したパス
チルダ(~)はユーザーのホームディレクトリを表します。
ホームディレクトリは、各ユーザーに割り当てられた個人用のディレクトリのことを指します。
ポイント
- Root Userのホームディレクトリは、「/root」
例:/root/.bashrc
- 作業ユーザーのホームディレクトリは「/home/ユーザー名」
例:/home/work/.bashrc
EX:.bashrcファイルってなに?
Bashシェルの設定ファイルであり、Bashシェルが起動するたびに読み込まるものになります。そのため、エイリアスの定義、環境変数の設定、パスの追加などのシェルの設定を記述しておくファイルになります。
また、ユーザー名を指定することで、他のユーザーのホームディレクトリを参照することもできます。
- 現在のユーザーの場合:
~/documents/file.txt
- 他のユーザーの場合:
~work/documents/file.txt
- メリットと用途
ホームディレクトリを基準とした指定方法であり、ユーザー固有の設定ファイルやリソースを参照する場合に便利。
- 注意点
他のユーザーとスクリプトやプログラムを共有する場合、ホームディレクトリが異なるため、正常に動作しない可能性がある。
最後に
「Pathを通す」と「環境構築」はシステム開発の最初の壁だと思います。
私は今でもよく詰みますが・・・
特にチルダを用いた参照方法はかなり初見殺しだと思いますが、上記を見ればわかると思います。
少しとっつきづらいですが、避けては通れないので、頑張っていきましょう!
以上、どなたかのお役にてたば幸いです。