BashでPATHなどの変数を使用して検索する方法

BashでPATHなどの変数を使用して検索する方法

見つからない場合に備えて、私がCDPATH望む経路があるとしましょう。cd.

それ自体を使わcdずにそれを満たす最初のパスを取得するには?bash

目的は、少なくとも私が使用しているこのバージョンのbashではサポートされないようにするcdことです。しかし、他のbashでも動作します。pushdpushdCDPATH

ベストアンサー1

使用に関する懸念がcdある場合実際にcd現在のシェルの作業ディレクトリの移動に関して無害に消えているサブシェルで実行されているコマンド置換を使用できます。

d=$(cd some-name)

たとえば、

$ mkdir /tmp/{a..d}
$ CDPATH=/tmp
$ cd /
$ pwd
/
$ dir=$(cd c)
$ printf '%s\n' "${dir%/*}"
/tmp
$ pwd
/

cd cここでは、仮説の項目がそれを満たす場合に出力をキャプチャしますCDPATH。結果は新しい作業ディレクトリなので、そのディレクトリからそのパスエントリを返すためにCDPATHパラメータ拡張を使用して最後のスラッシュ(デフォルトでは最も深いディレクトリの名前)を削除します。上記/tmp/cと同じ形になります/tmp

おすすめ記事