= Pushd 組込みコマンド
:encoding: UTF-8
:lang: ja
//:title: Yash マニュアル - Pushd 組込みコマンド

dfn:[Pushd 組込みコマンド]は{zwsp}link:_dirs.html[ディレクトリスタック]にディレクトリを追加し、シェルの作業ディレクトリをそのディレクトリに変更します。

[[syntax]]
== 構文

- +pushd [-L|-P [-e]] [{{ディレクトリ}}]+

[[description]]
== 説明

Pushd コマンドは link:_cd.html[cd コマンド]と同様に、シェルの作業ディレクトリをオペランドで指定したディレクトリに変更します。作業ディレクトリの変更に成功すると、新しい作業ディレクトリを{zwsp}link:_dirs.html[ディレクトリスタック]に追加します。

[[options]]
== オプション

link:_cd.html#options[Cd コマンドで使えるオプション]に加えて以下のオプションが pushd コマンドで使えます。

+--remove-duplicates+::
新しい作業ディレクトリが既にディレクトリスタックに入っている場合は、元々入っていた要素を削除して重複をなくします。

[[operands]]
== オペランド

{{ディレクトリ}}::
新しい作業ディレクトリのパス名です。絶対パスまたは元の作業ディレクトリからの相対パスで指定します。
+
この値がハイフン一つ (+-+) の場合、{zwsp}link:params.html#sv-oldpwd[+OLDPWD+ 変数]の値が指定されたものとみなします。
+
この値が符号付き整数の場合、その整数を{zwsp}link:_dirs.html[ディレクトリスタック]の要素のインデックスとみなして、その要素が表すディレクトリが指定されたものとみなします (指定された要素はディレクトリスタックから削除されます)。
+
このオペランドが与えられていない場合、インデックス ++1+ が指定されたものとみなします (+--default-directory+ オプションを指定した場合を除く)。

[[exitstatus]]
== 終了ステータス

Pushd コマンドの終了ステータスは、{zwsp}link:_cd.html#exitstatus[cd コマンドの終了ステータス]に加えて以下の値があります。

* link:params.html#sv-dirstack[+DIRSTACK+ 変数]が読み取り専用の場合は 1。
* link:params.html#sv-pwd[+PWD+ 変数]が未設定の場合は 4。
* {{ディレクトリ}}が符号付き整数であり、そのインデックスが範囲外の場合は 4。
* {{ディレクトリ}}および +--default-directory=...+ オプションが指定されておらず、ディレクトリスタックが空の場合は 4。

[[notes]]
== 補足

Pushd コマンドは{zwsp}link:builtin.html#types[任意組込みコマンド]です。
POSIX では pushd コマンドの動作は規定されていません。
このコマンドは link:posix.html[POSIX 準拠モード]では使えません。

// vim: set filetype=asciidoc expandtab:
