11

私はvirtualenvのソースコードを見ています.activateスクリプトには次のコードが含まれています:

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

さらに、このコマンドPS1="$PS1"は実際には何もしません。変数PS1を既に持っている値と等しく設定するだけです。

このスクリプトは何らかの方法で自動生成され、一部のシステムでは、これらのステートメントは少し異なって見え、少し役に立たないと思います。

于 2012-12-20T16:33:23.273 に答える