Skip to content
Latchkey

ワーキングディレクトリとは? シェルの現在のフォルダ

ワーキングディレクトリ(またはカレントディレクトリ)は、プロセスが自身の位置として扱うフォルダであり、相対パスが解決される基準となる基点です。

すべてのプロセスには現在のワーキングディレクトリ、つまりそのプロセスが「いる」フォルダがあります。./buildのような相対パスはそこから解釈されます。CIでは、ワーキングディレクトリは非常に重要です。ファイルがどこにあるかを決定し、step間でリセットされることがあり、そのままだと想定していたスクリプトを驚かせます。

ワーキングディレクトリとは何か

それはプロセスが現在とみなすディレクトリです。src/index.jsのような相対パスは、それをワーキングディレクトリに結合することで解決されます。各プロセスは親から継承した独自のものを持ちます。

確認と変更

pwdコマンドは現在のワーキングディレクトリを表示し、cdはそれを変更します。cdは現在のシェルにのみ影響するため、あるプロセスでの変更は別のプロセスを変えません。

なぜ重要か

  • 相対パスは完全にそれに依存します。
  • 誤ったワーキングディレクトリは「ファイルが見つかりません」エラーを引き起こします。
  • サブシェル内でのcdは親には持続しません。

相対対絶対

絶対パスはワーキングディレクトリを無視し、相対パスはそれに依存します。堅牢である必要のあるスクリプトは、驚きを避けるためにあらかじめ絶対的なベースパスを計算することがよくあります。

CIにおけるワーキングディレクトリ

CIは各stepを定義されたワーキングディレクトリ、多くの場合リポジトリのルートで実行します。あるstepでのcdは次には引き継がれません。各stepが新しいシェルだからです。前のcdに頼るのではなく、stepのworking-directory設定または絶対パスを使いましょう。

マネージドrunnerでの予測可能なパス

Latchkeyのrunnerでは、各stepは既知のワーキングディレクトリで始まります。ディレクトリの変更はstep間で生き残らないため、stepごとにワーキングディレクトリを明示的に設定するか、信頼できるファイルアクセスのために絶対パスを使いましょう。

重要なポイント

  • ワーキングディレクトリは、プロセスが現在として扱うフォルダです。
  • 相対パスはそれに対して解決されます。誤ったcwdはファイルが見つからないエラーを引き起こします。
  • CIではstep間でcwdがリセットされるため、stepごとに設定するか絶対パスを使いましょう。

関連ガイド