作業ディレクトリがファイルディレクトリまたはそのサブディレクトリのいずれかである場合は、パスにファイルを追加する方法は?だから私が中にいるか/foo
外にいるとき/foo/bar/
私は/foo/foo.foo
道を行くでしょうが、/foo
木の上にいるなら私はそれを持つことができません。
答え1
私はこれを達成するための組み込み方法を知りませんが、きちんとしたトリックを実行できます。Unix電動工具(第2版項目14.14)。を使用する場合は、bash
次の関数を定義します。
cd() {
builtin cd "$1"
PATH="$(echo $PATH | sed sX/foo/foo.foo:XXg)"
if [ "${PWD:0:4}" = "/foo" ]; then
export PATH="/foo/foo.foo:$PATH"
fi
}
${PATH//}
(私たちが検索するテキストにが含まれているので、バリアントを使用して置換を実行することは不可能だと思います。/
)
これは、どこかに到着するたびにcd
要求された変更を実行し、パスから削除し、/foo/foo.foo
最後に新しい現在のディレクトリがあるかどうかを確認し、パスの/foo
前に追加します。パスから最初に削除すると、追加する前にすでに存在していることを確認する必要はありません。/foo/foo.foo
/foo/foo.foo
pushd
これを行うには、以下を再定義する必要がありますpopd
。