linux - 在 linux 的 "local"工具链上

标签 linux bash path

长时间潜伏者第一次海报。

我到处都找过了,我确信它很容易找到,但我不能正确地用词来搜索。

我正在根据教科书进行一些编码练习,我的所有工作都在具有以下层次结构的目录中:

        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/

相关文章:

mysql - bash 中的条件语句与 mysql 查询

python - 你如何在 python 2.7 中使用 "os.path.isfile ()"和一组 "path"但一个变量文件名?

python - 当前 Python 实例的路径?

linux - 在 Linux 容器上的 dotnet Core 中实现消息消费者

linux - 将文件行排列成表格形式

linux - grep:/proc/sysrq-trigger: 输入/输出错误

bash - 在 awk 中在文件中搜索时使用变量作为搜索模式时面临的问题

linux - bash/linux 的简单一行,检查 PNG 是否有效?

linux - SFTP 按本地文件日期设置上传顺序

java - Windows 从命令行添加到路径