在Bash中自动更改$ PATH

时间:2011-06-06 14:00:53

标签: bash path

我工作的项目在存储库中有一些可执行脚本。这些脚本实际上是自动执行某些开发任务的工具,只有当我在repo中并且它们只对repo中的文件起作用时才会调用它们。我的典型工作会议看起来像这样:

$ cd $REPO
$ ./tools/start-session
$ some-script some arguments
$ other-script other arguments

换句话说,start-session脚本只是在$PATH变量中添加了适当的条目。

我想进一步自动化,以便我不必调用$REPO/tools/start-session脚本。我想要实现的是让bash自动检测到我在我的repo目录中并附加到$PATH的正确条目。关键是我有我的repo的许多工作副本,并且每个分支中的工具略有不同,我经常在工作副本之间移动,我想我的shell有点猜测我想调用哪个脚本。

我该怎么做?

我唯一能想到的是每次命令完成时都会执行$PS1变量,所以我可以用某种方式勾选一些$PATH - 更改脚本,即使用反引号

之类的东西
PS1=`update-path`$PS1

但这似乎不是正确的方法。

2 个答案:

答案 0 :(得分:1)

在正确的轨道上,但不要使用PS1 - 您需要PROMPT_COMMAND。例如:

 PROMPT_COMMAND='ls'
每次出现新提示时,

都会执行ls。这是否能解决你根本问题我不能说,因为我不确定我是否理解它。

答案 1 :(得分:0)

我会创建一个简单的bash脚本 - 让我们称它为cs(更改会话) - 它改变目录并更新路径,所以而不是

$ cd $REPO
$ ./tools/start-session
$ some-script some arguments
$ other-script other arguments

你会做的

$ cs $REPO
$ some-script some arguments
$ other-script other arguments

这样的事情:

#!/bin/bash
cd $1
./tools/start-session