サブディレクトリにある場合はパスに追加

サブディレクトリにある場合はパスに追加

作業ディレクトリがファイルディレクトリまたはそのサブディレクトリのいずれかである場合は、パスにファイルを追加する方法は?だから私が中にいるか/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

関連情報