2013-07-26 86 views
2

我在.bashrc文件中有一個非常簡單的ps1腳本,這會導致一個名爲blah的隨機腳本生成器。bash ps1只在新的終端窗口上執行腳本一次

export PS1="\[$(tput bold)\]\[$(tput setaf 1)\]\\$ \[$(tput sgr0)\] $PWD :: **$(. blah)** ::" 

的嗒嗒腳本應該簡單地每次導出一個隨機字符串在shell ....

function silly { 
    local RANDOMQUOTE=$[ ($RANDOM % 10) ] local fooey=('rand1' 'rand2' 'rand3' 'rand4' 'rand5'); 
    echo ${fooey[RANDOMQUOTE]} 
} 

silly 

但是似乎這個腳本只有每個我在ITERM創建一個新的窗口時間excuted,當然這意味着腳本不再是隨機的!

隨機函數不每次叫的例子:

$ /Users/username :: rand2 :: 
$ /Users/username :: rand2 :: 
$ /Users/username :: rand2 :: 
$ /Users/username :: rand2 :: 

我在這裏幹什麼什麼了嗎?剛開始學習bash,因此缺乏術語的道歉,隨意編輯!

+0

http://unix.stackexchange.com/ – user2485710

+0

工作,謝謝! – ChrisJAllen

回答

3

正如Single/double quotes ksh說:

的 「$ PWD」 立即解決。 (...)當您設置爲'$ PWD'時,它確實不會立即解決,因此它會在使用時解析,並在您更改目錄時更改。

因此改變

export PS1="[$(tput bold)][$(tput setaf 1)]\$ [$(tput sgr0)] $PWD :: $(. blah) ::" 

export PS1='[$(tput bold)][$(tput setaf 1)]\$ [$(tput sgr0)] $PWD :: $(. blah) ::' 

也就是說,PS1='<code>'代替PS1="<code>"