11

我正在查看 virtualenv 的源代码,激活脚本包含以下代码:

if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then  
    _OLD_VIRTUAL_PS1="$PS1"    
    if [ "x" != x ] ; then
        PS1="$PS1"
    else 
    if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
    else
        PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
    fi
    fi
    export PS1
fi

线路if [ "x" != x ]有什么作用?x 未在脚本的其他任何地方定义。

4

1 回答 1

11

在 Bash 中,该测试肯定会失败;[ "x" != x ]总是返回非零退出状态(即“false”),因为"x"x都是由单个字符组成的字符串x。(在这种情况下,引号实际上没有任何作用。)

更重要的是,该命令PS1="$PS1"实际上也没有做任何事情:它只是将变量设置为PS1等于它已经拥有的值。

我猜这个脚本是以某种方式自动生成的,并且在某些系统上,这些语句看起来会有点不同,而且有点没用。

于 2012-12-20T16:33:23.273 回答