2011-06-06 43 views
1

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

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

换句话说,该start-session脚本只是增加了一个合适的入口到$PATH变量。

我想进一步自动化,以便我不必致电$REPO/tools/start-session脚本。我想达到的目的是让bash自动检测到我在我的回购目录中并附加正确的条目到$PATH。关键是我有很多工作副本,并且每个分支中的工具都有所不同,我经常在工作副本之间移动,我希望我的shell能够猜测我想调用哪个脚本。

我该怎么做?

我能想到的唯一的事情是,$PS1变量被每一个命令完成时执行的,所以我可以以某种方式挂钩一些$PATH在那里使用反引号 - 改变脚本,即做一些事情像

PS1=`update-path`$PS1 

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

回答

1

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

PROMPT_COMMAND='ls' 

将在每次出现新提示时执行ls。这是否会解决你的根本问题,我不能说,因为我不知道我的理解是否正确。

+0

就是这样!那么我想,PS1应该是轻量级的,只需要显示提示符,而PROMPT_COMMAND可以做任何重量级的东西。 – Jasiu 2011-06-07 10:00:15

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