对${ZSH_VERSION+set}的验证

磨砺技术珠矶,践行数据之道,追求卓越价值  

回到上一级页面:PostgreSQL内部结构与源代码研究索引页    回到顶级页面:PostgreSQL索引页

[作者:高健@博客园 luckyjackgao@gmail.com]

PostgreSQL中,configure中第一段是如下的代码:

if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '${1+"$@"}'='"$@"'
  setopt NO_GLOB_SUBST
else
  case `(set -o) 2>/dev/null` in
  *posix*) set -o posix ;;
esac

fi

对 ${ZSH_VERSION+set} 进行了探究:

首先判断 当前 shell 的种类:

#abc
bash: abc: command not found

由此可知,当前是bash。

#echo $ZSH_VERSION

#
#echo ${ZSH_VERSION}

#

#echo ${ZSH_VERSION+set}

#

转换为zsh 再执行:

#zsh
#

#echo $ZSH_VERSION
4.2.6
#

#echo ${ZSH_VERSION}
4.2.6
#

#echo ${ZSH_VERSION+set}
set
#

 

再看  test -n "${ZSH_VERSION+set}"

在bash下:

#test -n "${ZSH_VERSION+set}" && ls
#

在zsh下:

#test -n "${ZSH_VERSION+set}" && ls
#install.log Desktop

也就是说,本文一开始的代码段第一行是这样的:

判断系统所处的Shell,如果是 zsh, 则执行 emulate sh 命令。如果不是就跳过。

 

磨砺技术珠矶,践行数据之道,追求卓越价值  

回到上一级页面:PostgreSQL内部结构与源代码研究索引页    回到顶级页面:PostgreSQL索引页

[作者:高健@博客园 luckyjackgao@gmail.com]

posted @ 2012-07-19 10:46  健哥的数据花园  阅读(1207)  评论(0编辑  收藏  举报