我正在查看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 未在脚本中的其他任何地方定义。
最佳答案
在 Bash 中,该测试肯定会失败; [ "x" != x ]
总是返回非零退出状态(即“假”),因为 "x"
和 x
都是由单个字符 x
组成的字符串. (在这种情况下,引号实际上没有任何作用。)
更重要的是,命令PS1="$PS1"
也没有真正做任何事情:它只是设置变量 PS1
等于它已经拥有的值(value)。
我猜这个脚本是以某种方式自动生成的,并且在某些系统上,这些语句看起来有点不同,而且没那么无用。
关于shell - if [ "x"!= x ] 在 bash 中会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13976472/