2011-06-06 63 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