UNIX/Linuxの部屋 コマンド:cd

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド cd カレントディレクトリを変更する。シェルの内部コマンド。 このエントリーをはてなブックマークに追加

最終更新


cd コマンドは、カレントディレクトリを変更するコマンドである。なおカレントディレクトリとは、「今 自分がいるディレクトリ」のこと。
cd コマンドは、あらゆる UNIX/Linux で使用可能である。



cd コマンドの基本的な使い方
cd コマンドに移動したいディレクトリを引数で指定すると、そのディレクトリに移動する。
% pwd
/home/hogehoge
⇒ 現在のカレントディレクトリは /home/hogehoge
% cd /usr
⇒ カレントディレクトリを /usr に変更 (/usr に移動)
% pwd
/usr
⇒ pwd 結果も変わった
% cd local
⇒ さらにカレントディレクトリを /usr/local に変更
% pwd
/usr/local
cd コマンドを引数なしで起動するとホームディレクトリに移動する。
% cd
% pwd
/home/hogehoge
⇒ 引数を省略して cd を実行すると、ホームディレクトリへ移動
% cd ..
% pwd
/home
⇒ 「..」は「一つ上のディレクトリ」を意味する

cd - で一つ前のディレクトリに戻る
引数に「-」を指定すると、一つ前のディレクトリに戻る (これが機能するかどうかはシェルによる)。ただし、2個以上前のディレクトリまでさかのぼって移動することはできない。
% cd /dir1
% cd /dir2
% pwd
/dir2
% cd -
% pwd
/dir1
⇒ ひとつ前のカレントディレクトリに戻った
% cd -
% pwd
/dir2
⇒ 連続して cd - すると、/dir1 と /dir2 を行き来することになる

カレントディレクトリはプロセス固有の情報
カレントディレクトリは各プロセス固有の情報である。シェルからあるコマンドを実行し、その中でカレントディレクトリを変更しても、シェル自体のカレントディレクトリは移動しない。つまり、
#!/bin/sh
cd /
というスクリプトをシェル上から実行しても、シェル自体のカレントディレクトリは変わらない。この特性があるために、cd コマンドは /bin/cd などの外部コマンドではなく、tcsh や bash などシェルの内部コマンドになっている。

どうしても外部コマンドの結果によりシェルのカレントディレクトリを変更したい場合は、
#!/bin/sh
echo cd /
として、
% eval `hoge.sh` (バッククォートで囲む)
とすればよい。

また、カレントディレクトリは各プロセス固有の情報であるということを利用して、
% (cd /foo; tar zcf archive.tgz .)
などとすると、シェルのカレントディレクトリを変えずに /foo 以下のアーカイブを作成することができる。カッコで括った部分は別のシェル (子プロセス) として実行されるので、カッコ内でどれだけカレントディレクトリを変更しても、現在のシェルには影響がない。

なお、これは
% pushd /foo; tar zcf archive.tgz . ; popd
% cd /foo; tar zcf archive.tgz . ; cd -
と等価である。

読み方 cd (UNIXコマンド) [しー・でぃー] このエントリーをはてなブックマークに追加

"Change Directory" の略。