如果工作目录是文件的目录或其子目录之一,如何将文件添加到路径?所以当我在里面/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
......