我试图在ESXi shell中运行bash shell脚本。
认为ESXi与posix兼容,posix编译器引发了很多语法错误。
如果有人有答案,请告诉我
答案 0 :(得分:1)
manual列出了在POSIX模式下运行时更改的行为。您应该相应地调整脚本。
以下列表是POSIX mode
生效时的更改内容:
$PATH
以查找新位置。这也适用于“shopt -s checkhash
”。Done(status)
”。Stopped(signame)
”,其中,例如,SIGTSTP
。bg
内置版使用所需的格式来描述放置在后台的每个作业,其中不包括作业是当前作业还是上一作业的指示。PS1
和PS2
个‘!’
到历史记录编号和‘!!’
到‘!’
的扩展,并对值执行了参数扩展无论PS1
选项的设置如何,都为PS2
和promptvars
。$ENV
)而不是普通的Bash文件。~/.sh_history
(这是默认值$HISTFILE
)。kill -l
”的输出在一行上打印所有信号名称,以空格分隔,不带“SIG
”前缀。kill
内置版不接受带有“SIG
”前缀的信号名称。.
文件名中的文件名,则会退出非交互式shell。.
或source
builtins读取的脚本中存在语法错误,或者eval
内置处理的字符串中存在语法错误,则会退出非交互式shell。${...}
扩展时,单引号不再特殊,不能用于引用右括号或其他特殊字符,除非运算符是定义为执行的运算符之一模式删除。在这种情况下,它们不必显示为匹配对。‘-’
开头,则解析器不会将时间识别为保留字。export
和readonly
内置命令以POSIX所需的格式显示其输出。trap
内置显示的信号名称不带前导SIG
。trap
内置函数不检查可能的信号规范的第一个参数,如果是,则将信号处理恢复为原始处置,除非该参数仅由数字组成并且是有效的信号编号。如果用户想要将给定信号的处理程序重置为原始处置,则应使用‘-’
作为第一个参数。.
和source
内置组件在搜索PATH
时找不到找到的文件名参数时,不搜索当前目录。-e
选项的值。当不处于POSIX模式时,Bash会清除此类子shell中的-e
选项。alias
内置显示别名定义时,除非提供-p
选项,否则它不会显示前导'别名'。set
内置函数,则它不会显示shell函数名称和定义。set
内置函数,它将显示不带引号的变量值,除非它们包含shell元字符,即使结果包含非打印字符。cd
内置函数,并且从$PWD
构造的路径名和作为参数提供的目录名不引用现有目录时,cd
将失败而不是回到物理模式。pwd
builtin验证它打印的值是否与当前目录相同,即使没有要求它使用-P
选项检查文件系统。fc
内置版不包含是否已修改历史记录条目的指示。fc
使用的默认编辑器为ed
。$PATH
中唯一的命名文件,shell将尝试执行此类文件。$VISUAL
和$EDITOR
。xpg_echo
选项时,Bash不会尝试将任何参数解释为echo作为选项。转换转义字符后,将显示每个参数。ulimit
内置版使用-c
和-f
选项的512字节块大小。SIGCHLD
上设置陷阱时SIGCHLD
的到达不会中断wait
内置并导致它立即返回。对于退出的每个子项,trap
命令运行一次。