zoukankan      html  css  js  c++  java
  • 对${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]

  • 相关阅读:
    去除inline-block出现间距的几种方法
    vscode插件和快捷键
    es6三个点运算符
    jq返回顶部
    jq版轮播图
    js动态操作DOM
    js中的闭包
    es6之箭头函数
    in和hasOwnProperty的区别
    改变this指向的三种方法
  • 原文地址:https://www.cnblogs.com/gaojian/p/2598828.html
Copyright © 2011-2022 走看看