博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对${ZSH_VERSION+set}的验证
阅读量:6948 次
发布时间:2019-06-27

本文共 834 字,大约阅读时间需要 2 分钟。

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_SUBSTelse case `(set -o) 2>/dev/null` in *posix*) set -o posix ;;esacfi

对 ${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_VERSION4.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://ishnl.baihongyu.com/

你可能感兴趣的文章
Ant design 组件开发
查看>>
完整性约束
查看>>
docker 17.09.0-ce 启动更换网络地址
查看>>
关于《大道至简》第六章的收获
查看>>
JavaWeb部分面试题
查看>>
mac osx 系统开发php 的一些工具
查看>>
Tcp的三次握手,以及原理详解
查看>>
sprintboot 中占位符及多环境配置
查看>>
Oracle资源
查看>>
你需要一点点CIL
查看>>
java连接mysql的一个小例子
查看>>
laravel queue 修改之后不生效的坑
查看>>
[USACO07JAN]Balanced Lineup
查看>>
[入门OJ3876]怎样学习哲学
查看>>
陶哲軒實分析 習題3.6.9
查看>>
Python国内豆瓣源
查看>>
html页面的局部刷新
查看>>
C#不常见的语法
查看>>
[摘录]高效人士七习惯—以终为始原则
查看>>
[摘录]第4章 不道德的谈判策略
查看>>