Подтвердить что ты не робот

Что делать, если [ "x"!= X] в bash?

Я смотрю на исходный код virtualenv, а активирующий script содержит этот код:

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 не определяется нигде в script.

4b9b3361

Ответ 1

В Bash, этот тест будет терпеть неудачу; [ "x" != x ] всегда возвращает ненулевой статус выхода (т.е. "false" ), потому что "x" и x - это строка, состоящая из одиночного символа x. (В этом случае кавычки не имеют никакого эффекта.)

Что еще, команда PS1="$PS1" тоже ничего не делает: она просто устанавливает переменную PS1 равной значению, которое оно уже имеет.

Я предполагаю, что этот script каким-то образом автогенерируется, и что в некоторых системах эти утверждения будут немного отличаться и немного менее бесполезны.