CDPATH

CDPATH

パス(たとえば、私のフォルダ)にディレクトリを追加して、任意のディレクトリから入力するDownloadsたびに。cd Downloads~/Downloads

答え1

CDPATH

使用しているシェルがCDPATH環境変数をサポートしている場合は、以下を設定できます。

CDPATH=.:$HOME

シェル起動スクリプトから。その後、cd <directory>コマンドを使用すると、そのコマンドが<directory>現在のディレクトリのサブディレクトリとして存在しないたびに、コマンドはそれをホームディレクトリのサブディレクトリとして検索します(つまり、~/<directory>一致するものが見つかるとそのディレクトリに移動します)。

ディレクトリ名はパス検索を開始./または../抑制し、もちろん絶対パス名も同じですが、一部のシェルでのみこれをマニュアルに文書化します。 cd ./Downloadsパスは検索されません。

CDPATH他のシェルには若干異なるルールがあります。

  • .Almquist、Korn、およびBourne Againシェルは変数が存在する場合は明示的に検索しないため、現在のディレクトリ検索の期待される動作を維持するには、変数に前の項目を明示的CDPATHに含める必要があります。.
  • 対照的に、Zシェルは.最初に検索し、〜しない限り CDPATH.項目を明示的に含めるか、POSIX_CDシェルオプションを設定して使用できます。

    CDPATH=$HOME

    また、現在のディレクトリを検索する動作が発生します。 (パスを検索するタイミングを制御するこの方法は、.4DOS / NDOSなどのコマンドソルバーを使用してMS / PC / DR-DOSユーザーが見つけることができる古いアイデアです。痛みを伴うほどおなじみ.)
  • 渡辺シェル検索. 最後、にリストされているディレクトリを確認した後CDPATH

私は意図的にCDPATH変数をエクスポートせずにその効果を対話型シェルに制限したいと思います。複雑なスクリプトを実行するときにCDPATHを有効にすると、予期しない副作用が発生する可能性があります。

cdpath

この目的のために、Zシェルでは代わりにcdpath変数を使用できますCDPATH。 Cシェルにも変数がありますが、cdpathまったくありません。CDPATH

cdpath誤ってエクスポートするのが難しい配列型シェル変数。配列なので、コロンで区切られた形式よりも操作が簡単ですCDPATH

CシェルとTENEX Cシェル

C シェルでは、以下を実行できます。

cdpath=(~) 設定
.Cシェルはcdpathシェル変数を表示する前に自動的にシェル変数を検索するため、これを含める必要はありません。既存のパスに追加するには、次を使用します。

cdpath=($cdpath:q ~) 設定
これにより、:qファイル名拡張やコマンド置換の影響を受けないように、割り当ての変数拡張が引用されます。

Cシェルは.最初に検索してからcdpath

Zシェル

Z シェルでは、以下を実行できます。

CDパス=(~)
以下のルールがCDPATHZシェルに適用されます。これは検索パスを指定するのに便利な構文です。既存のパスに追加するには、次を使用します。

CDパス+=(~)
Zシェルは:qCシェルに似ていますが、この構文ではZシェルは必要ありません。

また、Zシェルは自動的cdpathCDPATH

答え2

Downloads特定のディレクトリにアクセスする場合は、~/Downloadsそのディレクトリにシンボリックリンクを配置できます。

ln -s ~/Downloads .

これで、CD のダウンロードがどこからでも ~/Downloads に移動できるようにするには、cdその機能を使用して上書きできます。たとえば、次のようなものがあります.bashrc

cd() { if [ "$1" = Downloads ]; then builtin cd ~/Downloads; else builtin cd "$1"; fi; }

ただし、標準コマンドの意味を変更することはお勧めできません。これは多くの混乱を引き起こす可能性があります。本当に短いものが必要な場合は、別名を作成するか、cdDownloads単にdownloadsそこに移動することもできます。

alias downloads="cd ~/Downloads"

関連情報