【问题标题】:bash ps1 only executes a script once on new terminal windows [duplicate]bash ps1 仅在新终端窗口上执行一次脚本[重复]
【发布时间】:2015-11-13 20:31:56
【问题描述】:

我的 .bashrc 文件中有一个非常简单的 ps1 脚本,它执行一个名为 blah 的随机脚本生成器。

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

blah 脚本每次都应该在 shell 中导出一个随机字符串....

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,见谅,缺乏术语,随意编辑!

【问题讨论】:

标签: bash shell terminal ps1


【解决方案1】:

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>"

【讨论】:

    猜你喜欢
    • 2014-05-27
    • 2015-08-15
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2021-10-05
    • 2015-03-13
    • 2019-10-26
    相关资源
    最近更新 更多