Cd 組込みコマンドはシェルの作業ディレクトリを変更します。
構文
-
cd [-L|-P [-e]] [ディレクトリ]
説明
Cd コマンドはシェルの作業ディレクトリをオペランドで指定したディレクトリに変更します。
新しい作業ディレクトリに応じて PWD
変数の値が再設定されるとともに、前の PWD
変数の値が OLDPWD
変数に設定されます。新しい PWD
の値は .
や ..
のディレクトリ成分を含みません (POSIX 準拠モードで新しいパスが /..
で始まる場合を除く)。
指定したディレクトリが相対パスの場合 (最初が .
または ..
で始まるものを除く)、コマンドの検索における PATH
変数の検索と同様にして、CDPATH
変数の値にあるコロンで区切った各ディレクトリ内に指定したディレクトリがあるかどうか調べます。ディレクトリが見つかった場合は、そのディレクトリが新しい作業ディレクトリになります。見つからなかった場合は、ディレクトリは現在の作業ディレクトリからの相対パスとなります。
CDPATH
変数の検索で新しい作業ディレクトリが見つかった場合またはディレクトリとして -
が指定された場合は新しい作業ディレクトリのパスを標準出力に出力します。
作業ディレクトリの変更に成功した場合、YASH_AFTER_CD
変数が設定されていればその値がコマンドとして解釈・実行されます (非 POSIX 準拠モード時)。
オプション
-
-L
-
--logical
-
ディレクトリパスに含まれるシンボリックリンクを解決せずに新しい作業ディレクトリを決定します。新しい
PWD
変数の値にはシンボリックリンクになっているパス名コンポーネントがそのまま残ります。 -
-P
-
--physical
-
ディレクトリパスに含まれるシンボリックリンクを解決します。新しい
PWD
変数の値はシンボリックリンクを含みません。 -
-e
-
--ensure-pwd
-
このオプションは
-P
(--physical
) オプションと一緒に指定する必要があります。 作業ディレクトリが変更された後に、PWD
変数に設定すべき新しい作業ディレクトリパスが特定できない場合、このオプションが指定されていると、終了ステータスが 1 になります。このオプションが指定されていない場合は、終了ステータスが 0 になります。 -
--default-directory=ディレクトリ
-
ディレクトリオペランドが与えられていない場合は、代わりにこのオプションで指定したディレクトリを新しい作業ディレクトリとします。
-L
(--logical
) オプションと -P
(--physical
) オプションの両方を指定した場合、後に指定したほうを優先します。どちらも指定していない場合は、-L
を指定したものとみなします。
オペランド
終了ステータス
-
作業ディレクトリを正しく変更できた場合:
-
-L
オプションが有効な場合、終了ステータスは 0 です。 -
-P
オプションが有効な場合:-
PWD
変数に設定すべき新しい作業ディレクトリパスが特定できた場合、終了ステータスは 0 です。 -
PWD
変数に設定すべき新しい作業ディレクトリパスが特定できなかった場合:-
-e
オプションが指定されている場合、終了ステータスは 1 です。 -
-e
オプションが指定されていない場合、終了ステータスは 0 です。
-
-
-
-
内部で呼び出される
chdir
システムコールがエラーを返した場合、終了ステータスは 2 です。 -
-L
オプションが有効で、新しいディレクトリパス名に..
が含まれていて、それが存在しないディレクトリを指している場合、終了ステータスは 3 です。 -
HOME
またはOLDPWD
が未定義もしくは空文字列であるためにディレクトリが解決できなかった場合、終了ステータスは 4 です。 -
コマンドライン引数が不正な場合、終了ステータスは 5 です。
終了ステータスが 2 以上の場合、作業ディレクトリは変更されません。
PWD
または OLDPWD
変数が読み取り専用の場合、変数は更新されませんが、これは終了ステータスに影響しません。
補足
Cd コマンドは必須組込みコマンドです。
POSIX には YASH_AFTER_CD
変数および --default-directory=…
オプションに関する規定はありません。
YASH_AFTER_CD
変数の実行結果は cd コマンドの終了ステータスには影響しません。