对${ZSH_VERSION+set}的验证

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 命令。如果不是就跳过。










本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/archive/2012/07/19/2598828.html,如需转载请自行联系原作者
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值