对${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]