cdの移動先を省略!隠し環境変数「CDPATH」で深い階層へワープする方法【Linuxコマンド入門 Part4-5】

はじめに

前回は、複数のディレクトリを行き来するのに便利な pushd / popd を紹介しました。

Linuxコマンド入門第4シリーズ。スタック形式でディレクトリ移動できるpushd,popdコマンドについて紹介

cdコマンドより便利?元のディレクトリに一瞬で戻る移動術(pushd/popd)【Linuxコマンド入門 Part4-4】

深いディレクトリを行ったり来たりしていませんか?Linuxの「pushd」と「popd」を使えば、元の作業場所へ一瞬で戻れるようになります。「cd」コマンドの限界を超える、パンくずリストのようなスタック移動術を分かりやすく解説!

前回記事:cdコマンドより便利?元のディレクトリに一瞬で戻る移動術(pushd/popd)【Linuxコマンド入門 Part4-4】

しかし、そもそも「最初の1回目の移動(長いパスの入力)」自体が面倒くさいと感じたことはありませんか?

例えば、Web開発をしていると /var/www/html/my_project/ のような深い階層に頻繁にアクセスします。ホームディレクトリから移動するたびに、毎回 cd /var/www/html/my_project/ と打ち込むのは大変ですよね。

今回は、そんな悩みを一発で解決する隠し環境変数、「CDPATH(シーディーパス)」を紹介します。 これを使えば、どこにいても cd my_project と打つだけで、目的の場所へ一瞬でワープできるようになります!

Linuxコマンド入門第4シリーズ。cdの移動先を省略!隠し環境変数「CDPATH」で深い階層へワープする方法を詳しく紹介

1. 「CDPATH」とは? PATHの親戚みたいなもの

第3回の記事で、コマンドを探しに行くための住所録である「PATH(パス)」について学びました。【Linux】PATHとは?パスを通す方法と環境変数の確認・設定を解説【コマンド入門 Part4-3】

実はLinuxには、cd コマンドで移動する『ディレクトリ』を探しに行くための住所録」もひっそりと用意されています。それが CDPATH です。

通常、cd ディレクトリ名 と打つと、Linuxは「今いる場所(カレントディレクトリ)」の中だけを探します。 しかし、CDPATH に特定の場所を登録しておくと、「今いる場所に無かったら、登録された住所(CDPATH)の中も探して、そこに移動する」という動きをしてくれるのです。

2. CDPATHを設定してみよう

それでは、実際に先ほどのWebディレクトリ(/var/www/html/)を登録して、ワープを体験してみましょう。

手元で試してみたい場合は、以下のコマンドを打ち込むとテスト用フォルダを作ってくれます。

mkdir -p $HOME/testdir/var/www/html/my_project;

# 以下のようなフォルダができます。(cd ~ で移動する先 ホームディレクトリにファイル作成しています)
/testdir
|--var
|  |--www
|  |  |--html
|  |  |  |--my_project
# 削除したいときは /textdirがある階層(lsで見える階層)に移動し以下を実行すると消せます。
# (釈迦に説法かもしれませんが一応)
# rm -r testdir

※手元で試すことを考えてホームディレクトリに配置し、以下の変数$HOMEや~で作っていますが、自分で設定するときは絶対パスで定義するとエラーが少ないです。適宜自身の環境で読み替えてください。

ステップ1:CDPATHを一時的に設定する(export)

第3回と同様 export コマンドを使います。ターミナルで以下のように入力してください。

export CDPATH=".:~/var/www/html"

追加できたかの確認は,同様にechoで確認できます。

echo $CDPATH
【超重要:最初の .: について】

複数の値を持てる環境変数は、区切りを”:”で行っているものが多く。一番初めの “.:”は “.”つまりカレントディレクトリ(現在のディレクトリ)を表しています。そのためもしこれがないと、cdしようとしても、今のディレクトリを参照しなくなるということなので、絶対に消さないでください。

これを消してしまうと「今いる場所のディレクトリに cd できない」という致命的なバグ状態になってしまいます。(「まずは今いる場所を探し、無ければ次を探す」というルールにするためです)

(ちょっとしたいたずらには使えるかもしれませんが、”友情破壊待ったなし”なので、もしやるとしても気の許した友人間だけでやりましょう。)

ステップ2:ワープを試してみる

現在、あなたはホームディレクトリ(~)にいるとします。 ここから /var/www/html/ の中にある my_project フォルダへ移動したい時、従来なら絶対パスで長く打ち込む必要がありました。

しかし今は、ただこう打つだけです。

cd my_project
# 本来は cd /var/www/html/my_project と打たなくてはいけない。

【実行結果】

# mkdir -p $HOME/testdir/var/www/html/my_project;

export CDPATH=".:~/var/www/html"
cd my_project

# (/home/tukumo)/var/www/html/my_project に移動できる。
tukumo@lumenhero :my_project$

なんと、移動先のフルパスが画面に表示され、一瞬で深い階層へワープしました!

これは、Linuxが「今いる場所に my_project は無いな…おっ、CDPATHに登録されている /var/www/html/ の中にあるぞ!」と気を利かせてくれた結果です。


3. 設定を永続化しよう(.bashrc)

このワープ機能、一度味わうと手放せなくなります。 前回の aliasPATH と同様に、ターミナルを閉じても忘れないよう .bashrc(または .zshrc)に書き込んでおきましょう。(詳しくは過去記事参照:【.bashrc / .zshrc】Linux設定ファイルの書き方と反映方法【Linuxコマンド入門 Part4-2】)

nano ~/.bashrc

ファイルの一番下に以下を追記します。

# --- よく行くディレクトリへのワープ設定 --- 
# あくで記入例です自身の環境に合わせて記述してください
export CDPATH=".:~/var/www/html:$HOME/workspace/linux"

※複数の住所を登録したい場合は、PATH の時と同じように :(コロン)で繋げていきます。

保存して閉じたら、設定を反映させます。

source ~/.bashrc

4. CDPATHの注意点(やりすぎ厳禁!)

非常に便利な CDPATH ですが、「何でもかんでも登録するのはNG」です。

例えば、よくある名前のディレクトリ(srctestlog など)が色々な場所に散らばっている場合、cd test と打った時に「一体どこの test フォルダにワープしたのか分からない!」という事故が起きます。

【おすすめの運用法】

  • 登録するのは、自分がよく使う「プロジェクトのルート(大元)フォルダ」を1〜2個にする。
  • 移動した直後に pwd コマンド(今どこにいるか確認するコマンド)を打つ癖をつける。

私は、作業ディレクトリを xxx/xxxx/workspaceとして、その中にproject_AAA とかproject_BBBみたいな感じのフォルダでプロジェクト管理を行っています。そのため、この xxx/xxxx/workspace を追加してどこからでも cd Project_AAAとかで移動できるようにしてあります。


まとめ

  • CDPATH: cd コマンドの検索範囲を広げるための環境変数。
  • 設定方法: export CDPATH=".:/よく行く/パス"
  • 最大のメリット: どこにいても、深い階層にあるディレクトリへ名前だけで一瞬で移動できる。

これで、「黒い画面」の移動に関するストレスはほぼゼロになったはずです!

次回は、作業効率化の別アプローチ。過去の自分を振り返り、「さっき打ったあの長いコマンド、もう一回打ちたい(確認したい)…」を解決する history コマンドを紹介します。

指定された記事(ID: 3576)は現在公開されていません。


第四回”Linuxコマンド入門 Part4 ~自分好みの環境を整える~”では、linuxでの作業を効率化し自分好みの環境を作り上げる方法を紹介しています

デフォルト画像 5 記事
シリーズ

Linuxコマンド入門 Part4 ~ターミナル操作の効率化とシェル環境のカスタマイズ~

Linuxで、コマンドライン操作を効率化したり、自分好みにカスタマイズする方法を学ぼう。

ここまで読んでいただきありがとうございます。

では、次の記事で。 lumenHero