連載
» 2017年12月14日 05時00分 公開

Linux基本コマンドTips(167):【 cd 】コマンド/【 pwd 】コマンド――カレントディレクトリを変更、表示する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、カレントディレクトリを変更する「cd」コマンドと、カレントディレクトリを表示する「pwd」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、カレントディレクトリを変更する「cd」コマンドと、カレントディレクトリを表示する「pwd」コマンドです。

cdコマンド、pwdコマンドとは?

 「cd」コマンドは、カレントディレクトリ(カレントワーキングディレクトリ)の位置を変更するコマンドです ※1。

 「pwd」コマンドは、カレントディレクトリの名称を表示するコマンドです。cdコマンドと組み合わせて使うことが多いでしょう。

※1 コマンドラインでは、カレントディレクトリを相対パスの基準位置として使う。例えば「ls -al ./tmp/file1」ではカレントディレクト以下のtmpディレクトリにあるfile1の情報を表示する。





cdコマンドの書式

cd [オプション] [ディレクトリ]

pwdコマンドの書式

pwd [オプション]

※[ ]は省略可能な引数を示しています。




cdの主なオプション

短いオプション 意味
-P シンボリックリンクを指定した場合、リンクが指す「物理的な」ディレクトリ名を使用する
-e -Pオプション使用時、カレントディレクトリの変更に成功した後で物理的な名前を判定できない場合、0以外(失敗)のステータスを返す
-L 論理的なディレクトリ名を使用する(デフォルト)

pwdの主なオプション ※2

短いオプション 意味
-P 物理的なディレクトリ名を表示する
-L 論理的なディレクトリ名を表示する(デフォルト)

※2 cdコマンドとpwdコマンドは、シンボリックリンクのデフォルトの扱い方が同じだ。オプション「-P」(physical)と「-L」(logical)の機能も変わらない。





カレントディレクトリを変更する

 「cd ディレクトリ」で、指定したディレクトリがカレントディレクトリになります(画面1)。ディレクトリを何も指定しないで「cd」とすると、ホームディレクトリをカレントディレクトリとします。「cd -」では変更前のカレントディレクトリに戻ります ※3。

 現在のカレントディレクトリを確認するには、pwdコマンドを使います。

※3 bashの場合「cd ~-」で変更前のカレントディレクトリに戻る。これはbashの「チルダ展開」によるもので、「~-」は環境変数OLDPWDが表す絶対パスに置き換わる。なお、OLDPWDの内容は変更前のカレントディレクトリの絶対パス、環境変数PWDの内容はカレントディレクトリの絶対パスとなっている。



コマンド実行例

cd ディレクトリ画面1

(ディレクトリをカレントディレクトリに変更する)

cd /var/tmp

(/var/tmpをカレントディレクトリに変更する)

cd画面1

(ホームディレクトリをカレントディレクトリに変更する)

cd -画面1

(カレントディレクトリを直前のディレクトリに変更する)


 画面1では、cdコマンドを実行する前後でpwdコマンドを使ってカレントディレクトリを確認しています。

画面1 画面1 カレントディレクトリを変更したところ


シンボリックリンクの扱いを変える

 cdコマンドには、指定したディレクトリが「シンボリックリンク」だった場合の扱い方が2つあります。何もオプションを付けない場合、変更後の名前はシンボリックリンクのままです。

 「-P」オプションを使用すると、変更後の名前がシンボリックリンクではなく、シンボリックリンクの参照する物理的な名前になります。シンボリックリンクではない場合、「-P」を付けても付けなくても実行結果は変わりません。

 例えば、CentOSの場合「/bin」は「/usr/bin」へのシンボリックリンクになっています。「cd /bin」ならカレントディレクトリは「/bin」となり、「cd -P /bin」の場合、カレントディレクトリは「/usr/bin」になります。

 「-P」オプションの働きはpwdコマンドでもよく似ていて、物理的な名前を表示します。

 以下の画面2では、lnコマンド(連載第12回)でホームディレクトリに「mandir」という名前のシンボリックリンクを作成後、動作を確認しています。

画面2 画面2 シンボリックリンクの扱い方は2種類ある


環境変数「CDPATH」を活用する

 カレントディレクトリを変更する際に役立つのが、cdコマンドの実行時に自動的に参照する環境変数「CDPATH」です。CDPATH内に記録したパスからディレクトリを検索します。

 例えば「CDPATH=/usr」となっている場合、「cd bin」で「/usr/bin」へ移動できます。CDPATHに複数のパス(場所)を設定したい場合は「:」で区切ります。

 以下の画面3では、CDPATHに「/usr」と「/usr/share」を設定した後、「cd bin」で「/usr/bin」へ、「cd man」で「/usr/share/man」へ移動しています。

画面3 画面3 環境変数PATHを使ってカレントディレクトリを変更したところ

 なお、CDPATHに指定した場所に同じ名前のディレクトリがあった場合は、左側に指定した場所を優先します。例えば上記の実行例で「/usr/bin」と「/usr/share/bin」があった場合、「cd bin」の結果は「/usr/bin」となります。

 CDPATHの優先度は高く、カレントディレクトリに「bin」というディレクトリがあった場合も、CDPATHの「bin」を使います。この場合、カレントディレクトリ直下のbinを指定するには「cd ./bin」のように、パスを明示する必要があります。



筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2018 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。