見つからない場合に備えて、私がCDPATH
望む経路があるとしましょう。cd
.
それ自体を使わcd
ずにそれを満たす最初のパスを取得するには?bash
目的は、少なくとも私が使用しているこのバージョンのbashではサポートされないようにするcd
ことです。しかし、他のbashでも動作します。pushd
pushd
CDPATH
ベストアンサー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
。