关于;“本地”;linux中的工具链
长期潜伏者第一次海报 我到处都找过了,我相信很容易找到,但我无法准确地说出搜索结果 我在一本教科书上做一些编码练习,我所有的工作都在以下层次结构的目录中:关于;“本地”;linux中的工具链,linux,bash,path,Linux,Bash,Path,长期潜伏者第一次海报 我到处都找过了,我相信很容易找到,但我无法准确地说出搜索结果 我在一本教科书上做一些编码练习,我所有的工作都在以下层次结构的目录中: r00t / \ tools code \ chapts 工具目录中有两个脚本,使我的生活更轻松。我想要的,也是我发布的原因,是能够在r00t/tools中调用脚本,无论我在哪里,只要我在r00t中。我知道我可以将它们添加
r00t
/ \
tools code
\
chapts
工具目录中有两个脚本,使我的生活更轻松。我想要的,也是我发布的原因,是能够在r00t/tools中调用脚本,无论我在哪里,只要我在r00t中。我知道我可以将它们添加到全局路径中,但这似乎很懒惰,我不希望我的路径再膨胀(这是否合理?)
那么,我可以将脚本或程序以某种方式添加到目录中的“本地路径”中吗?查看一下允许您在进入或离开目录时执行脚本的ondir
()程序
有了它,您可以动态地更改path变量。然而,我必须承认,我从未使用过这个程序,也没有被告知它的发展状况
或者,您可以将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'
由于导出的路径需要源代码才能用于当前shell(如果使用bash alternative_cd.sh
,则只能获得脚本运行所在子shell的新路径)
我对它进行了测试,它似乎起了作用。玩得开心。查看一下ondir()程序,该程序允许您在进入或离开目录时执行脚本
有了它,您可以动态地更改path变量。然而,我必须承认,我从未使用过这个程序,也没有被告知它的发展状况
或者,您可以将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'
由于导出的路径需要源代码才能用于当前shell(如果使用bash alternative_cd.sh
,则只能获得脚本运行所在子shell的新路径)
我对它进行了测试,它似乎起了作用。玩得开心。通常的处理方法是在每个项目目录树的根目录中放置一个。在这种情况下,
r00t
。调用文件r00trc
,或制定自己的命名约定
rc文件应包括对命令行提示符的识别更改,以便不断提醒您shell正在使用的环境,以及重新分配路径
变量以满足项目的需要,以及您需要的任何其他项目特定环境变量、别名或颜色设置
在默认登录环境中,在将当前工作目录更改为r00t
之前或之后或不更改当前工作目录的情况下运行“bash”,生成一个子shell,然后获取r00trc
文件的源代码。这为您提供了一个带有项目环境的bashshell和一个识别提示。使用exit
退出子shell并返回默认环境
避免在主目录或项目目录根目录以外的任何位置收集项目rc文件,以便在对项目进行压缩、存档或发送给同事时不会丢失这些文件。处理此问题的通常方法是在每个项目目录树的根目录中放置一个。在这种情况下,
r00t
。调用文件r00trc
,或制定自己的命名约定
rc文件应包括对命令行提示符的识别更改,以便不断提醒您shell正在使用的环境,以及重新分配路径
变量以满足项目的需要,以及您需要的任何其他项目特定环境变量、别名或颜色设置
在默认登录环境中,在将当前工作目录更改为r00t
之前或之后或不更改当前工作目录的情况下运行“bash”,生成一个子shell,然后获取r00trc
文件的源代码。这为您提供了一个带有项目环境的bashshell和一个识别提示。使用exit
退出子shell并返回默认环境
避免在主目录或项目目录根目录以外的任何位置收集项目rc文件,这样,当您对项目进行压缩、归档或发送给同事时,它们不会丢失。据我所知,任何shell中都没有内置任何东西可以启用此功能。
git
通过向上搜索目录层次结构,查找.git
目录,在某种程度上实现了这一点。您最好的选择可能只是将XTRA目录添加到您的路径中。:'(这正是我自己开始思考的。我想你的$PATH变量没有理由不能变得超级庞大,只是编辑起来很麻烦。不过,谢谢!据我所知,任何shell中都没有内置任何东西可以启用此功能。git
通过搜索目录层次结构,查找