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

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

[[syntax]]
== 構文

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

[[description]]
== 説明

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

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

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

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

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

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

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

作業ディレクトリを正しく変更しディレクトリスタックに追加できた場合、終了ステータスは 0 です。エラーがあると終了ステータスは非 0 です。

[[notes]]
== 補足

Pushd コマンドはlink:builtin.html#types[準特殊組込みコマンド]です。
POSIX では pushd コマンドの動作は規定されていません。

// vim: set filetype=asciidoc expandtab:
