很长一段时间潜伏在海报上。
我到处寻找,我确信它很容易找到,但我无法正确地说出搜索结果。
我从教科书开始编写一些编码练习,并且我在以下层次结构的目录中完成了所有工作:
r00t
/ \
tools code
\
chapts
在tools目录中有几个脚本可以让我的生活更轻松。我想要的,以及我发布的原因是,无论我在哪里,都可以在r00t / tools中调用脚本,只要我在r00t里面。我知道我可以将它们添加到全局PATH中,但这看起来很懒,而且我不希望我的PATH再次出现气球(这是否合情合理?)。
那么,我可以将脚本或程序添加到"本地路径"不知怎的,在里面?
答案 0 :(得分:0)
向ondir
(here)程序查看link,让您在进入或离开目录时执行脚本。
通过它,您可以动态更改路径变量。但我必须承认,从未使用过该计划,也未被告知其发展状况。
或者,您可以使用脚本检查cd
与r00t目录替换pwd
命令,并根据结果更新$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
:
alias cd='. ./path/to/script/alternative_cd.sh'
因为需要获取导出的PATH才能使用当前的shell(如果使用bash alternative_cd.sh
,则只能获得脚本运行的子shell的新PATH)
我测试了它,它似乎正在工作。玩得开心。
答案 1 :(得分:0)
处理此问题的常用方法是将rc file放在每个项目目录树的根目录中。在这种情况下,r00t
。调用文件r00trc
或制定自己的命名约定。
rc文件应包含对命令行提示符的标识更改,以便不断提醒您shell正在使用的环境,并重新分配PATH
变量以满足项目需求,以及您需要的任何其他项目特定的环境变量,别名或颜色设置。
在默认登录环境中,通过运行' bash'来生成子shell。在将当前工作目录更改为r00t
之前或之后或之后,然后获取r00trc
文件。这为您提供了一个带有项目环境和识别提示的Bash shell。使用exit
退出子shell并返回默认环境。
避免在您的主目录或项目目录根目录以外的任何地方收集项目rc文件的诱惑,这样当您将项目归档并将其存档或发送给同事时,它们不会丢失。< / p>