如果在子目录中则添加到路径

如果在子目录中则添加到路径

如果工作目录是文件的目录或其子目录之一,如何将文件添加到路径?所以当我在里面/foo或在里面时/foo/bar/,我会/foo/foo.foo在我的路上,但如果我/foo在树的上面,我不会有它。

答案1

我不知道实现此目的的内置方法,但您可以采用一个巧妙的技巧Unix 电动工具(第二版第 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......

相关内容