在"本地" linux中的工具链

时间:2015-07-17 04:13:09

标签: linux bash path

很长一段时间潜伏在海报上。

我到处寻找,我确信它很容易找到,但我无法正确地说出搜索结果。

我从教科书开始编写一些编码练习,并且我在以下层次结构的目录中完成了所有工作:

        r00t
       /    \
  tools      code
                 \
                  chapts

在tools目录中有几个脚本可以让我的生活更轻松。我想要的,以及我发布的原因是,无论我在哪里,都可以在r00t / tools中调用脚本,只要我在r00t里面。我知道我可以将它们添加到全局PATH中,但这看起来很懒,而且我不希望我的PATH再次出现气球(这是否合情合理?)。

那么,我可以将脚本或程序添加到"本地路径"不知怎的,在里面?

2 个答案:

答案 0 :(得分:0)

ondirhere)程序查看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>