書式
cd [DIRECTORY]

概要

cd コマンドは
カレントディレクトリを変更します。

DIRECTORY が与えられれば、
それが変更先ディレクトリになります。

引数が与えられなければ
環境変数 HOME のディレクトリ
(ホームディレクトリ)
になります。

DIRECTORY が相対パスであるとき、
環境変数配列 CDPATH
プレフィクスを補おうとします。

fishは cd -
直前のディレクトリに変更できるようにするために、
ビルトインの cd のラッパー関数を用意しています。

prevd も参照してください。

cd 関数は最近訪れた25ディレクトリを
グローバル変数 $dirprev$dirnext
管理しています。

自動cd

fishは cd と入力せずに
以下の条件でディレクトリ名のみを与えられれば、
ディレクトリを変更しようとします。

  • . で始まる
  • / で始まる
  • ~ で始まる
  • / で終わる

実行例

# どちらもホームディレクトリに移動する
$ cd
$ ~
# /usr/src/fish-shellに移動する
$ cd /usr/src/fish-shell

訳注:ここから実例追加。

ディレクトリを指定すれば、
自動 cd できます。

$ /tmp
$ pwd
/tmp
# lsというディレクトリを作成
$ mkdir ls
# lsと指定するだけでは通常のlsが実行される
$ ls | head -1
Mail

# /を付けると自動cdが働く
$ ls/
$ pwd
/tmp/ls
$ cd ..
$ ./ls
$ pwd
/tmp/ls

たとえ存在するディレクトリとしても、
/ を付けないと自動 cd しません。

$ /tmp
$ mkdir xxxx
$ xxxx
xxxx: command not found
$ ./xxxx
$ pwd
/tmp/xxxx

CDPATH には
よく使うディレクトリを
設定すると便利です。

$ pwd
/r/sync/memo/wp/fish
$ set -Ux CDPATH /r/sync/memo /tmp
$ mkdir /tmp/xyz
$ cd
# ホームディレクトリから一気に/r/sync/memo/wpへ移動!
$ cd wp
$ pwd
/r/sync/memo/wp

# /tmp/xyzへ移動!
$ cd xyz
$ pwd
/tmp/xyz

# 自動cdとCDPATHは併用できない
$ cd
$ ./xyz
./xyz: command not found
$ cd ./xyz
cd: The directory './xyz' does not exist
$ cd xyz
$ pwd
/tmp/xyz

最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。