ディレクトリのシンボリックリンクの変更は、ホームディレクトリでのみ機能します。

ディレクトリのシンボリックリンクの変更は、ホームディレクトリでのみ機能します。

使用これ.bashrc回答、一般的に使用されているディレクトリに簡単に変更できるように、ファイルへのシンボリックリンクを作成しました。

例えば

ln -s ~/a/b/c/d/development dev

home入力により、自分のディレクトリからディレクトリにディレクトリを変更できます。私のディレクトリから入ることもできますが、これも機能します。developmentcd devls devhome

しかし、これらのコマンドはただ私のディレクトリで動作しますhome。他の場所から入力するとエラーメッセージが表示されますNo such file or directory

私が入力cd ~/devしたりls ~/dev動作したら。

~/誰かがこれが起こる理由とそれを修正して、ホームディレクトリにないときにパスに含める必要がないことを説明できますか?

ベストアンサー1

Bashをシェルとして使用しているので、CDPATHシェル変数を使用できます。これバッシュマニュアルそれを次のように描く

検索パス:CDPATHの各ディレクトリ名内のディレクトリを検索し、CDPATHでコロン( ':')で区切られた代替ディレクトリ名を使用します。

次の行を次の行に追加できます.bashrc

CDPATH=".:$HOME"

後で入力すると、cd dev現在の作業ディレクトリから次の名前のサブディレクトリが検索されますdev

  • そのようなディレクトリが存在する場合は、そのディレクトリに変更されます(cd組み込みコマンドが通常行うように)。
  • そうでない場合は、ホームディレクトリ(~)を検索し、シンボリックリンク(ディレクトリへのリンクであることを認識)を見つけて、宛先ディレクトリ(指す~/dev)に変更します。

ホームディレクトリ内のディレクトリの優先順位を指定するには、$HOMEまず()内にリストするだけですが、壊れるため、これを行わないことをお勧めします。CDPATH"$HOME:."最小の驚きの原理: 結果の振る舞いが標準から外れすぎます。

おすすめ記事