2

.bashrc ファイルに非常に単純な ps1 スクリプトがあります。これにより、blah というランダム スクリプト ジェネレーターが実行されます。

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

何とかスクリプトは、シェルで毎回ランダムな文字列をエクスポートするだけです....

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

silly

ただし、このスクリプトは iterm で新しいウィンドウを作成するたびにのみ実行されるようです。もちろん、これはスクリプトがランダムではなくなったことを意味します!

毎回呼び出されないランダム関数の例:

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

ここで何か間違ったことをしていますか?bashの学習を始めたばかりなので、用語が不足していることをお詫びします。自由に編集してください。

4

1 に答える 1

3

一重/二重引用符で述べたように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>".

于 2013-07-26T15:28:21.563 に答える