长时间潜伏者第一次海报。
我到处都找过了,我确信它很容易找到,但我不能正确地用词来搜索。
我正在根据教科书进行一些编码练习,我的所有工作都在具有以下层次结构的目录中:
r00t
/ \
tools code
\
chapts
在工具目录中有几个脚本可以让我的生活更轻松。我想要的,也是我发帖的原因,是无论我在哪里都能调用 r00t/tools 中的脚本,只要我在 r00t 中。我知道我可以将它们添加到全局 PATH 中,但这看起来很懒惰,我不希望我的 PATH 膨胀(这是否明智?)。
那么,我可以通过某种方式将脚本或程序添加到目录中的“本地路径”吗?
最佳答案
查看here ondir
( link ) 程序允许您在进入或离开目录时执行脚本。
这样你就可以动态地改变你的路径变量。但是,我必须承认从未使用过该程序,也不知道其开发状态。
或者,您可以将 cd
命令替换为检查 pwd
与 r00t 目录并根据结果更新 $PATH
的脚本。当然,您的 cd
会变慢,但可能不会很明显。
一个例子:
#!/bin/bash
#alternative cd
cd $*
#check for r00t directory
if [ "$( pwd | grep -o 'r00t')" == "r00t" ] ; then
#check path variable:
if [ "$(echo $PATH | grep -o 'r00t')" != "r00t" ] ; then
export PATH=$PATH:/DIR/r00t/bin
fi
else
#remove r00t from PATH when not in r00t
if [ "$(echo $PATH | grep -o 'r00t')" == "r00t" ] ; then
export PATH=$( echo $PATH | sed 's~:/DIR/r00t/bin~~' )
fi
fi
请注意,现在您必须按如下方式引入别名
:
alias cd='. ./path/to/script/alternative_cd.sh'
因为需要获取导出的 PATH 才能为您当前的 shell 工作(如果使用 bash alternative_cd.sh
,您只会获得运行脚本的子 shell 的新 PATH )
我测试了它,它似乎工作正常。玩得开心。
关于linux - 在 linux 的 "local"工具链上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31468283/