Solaris 10 6/06 发行说明

Solaris 命令和标准

下一节介绍 Solaris 10 OS 中某些命令和标准的行为变化。

Bash 2.0.5b 不再设置某些环境变量

Solaris 10 OS 包含 Bash 2.0.5b。此 shell 不再自动将下列变量导出到环境:

即使 shell 为这些变量分配缺省值,此新行为也适用。

解决方法:手动导出这些变量。

ln 实用程序需要 -f 选项

/usr/bin/ln 的行为已更改为继承从 SVID3 到 XCU6 的所有标准。如果使用 ln 命令而不带 -f 选项以链接到现有目标文件,则不建立链接。而是将诊断消息写入标准错误,且该命令继续链接任何其他源文件。最后,ln 命令退出,并显示错误值。

例如,如果文件 b 存在,语法 ln a b 生成以下消息:


ln: b: File exists

此行为更改影响包含不带 -f 选项的 ln 命令的现有 shell 脚本或程序。过去运行的脚本现在在 Solaris 10 OS 中可能失败。

解决方法:-f 选项与 ln 命令一起使用。如果有执行链接实用程序的现有脚本,请确保修改这些脚本以符合命令的新行为。

使用破折号或等号的新 tcsh Rejects setenv 变量名

在 Solaris 10 OS 中,tcsh 已升级为版本 6.12。此版本不再接受名称中使用破折号或等号的环境变量。包含 setenv 行且在 Solaris 早期版本中起作用的脚本在当前 Solaris 10 发行版中可能生成错误。将显示以下错误消息:


setenv: Syntax error

有关更多信息,请参阅 Solaris 10 OS 的 tcsh 手册页。

解决方法:不要在环境变量名称中使用破折号或等号。

STDIO getc 系列 EOF 条件行为更改

在严格符合 C 标准的模式下生成的应用程序可能受某些库功能的行为更改的影响。例如,使用 cc -Xcc89 编译模式编译的应用程序。下列库功能的行为已更改:

1990 C 标准的正式解释要求在设置文件结束条件后,后续输入操作中的文件不返回更多数据。例外情况是文件指针被重新定位或者应用程序已显式清除错误和文件结束标志。

所有其他编译模式的行为都保持不变。特别地,接口可在设置文件结束指示符后从流读取其他新写入的数据。

解决方法:在流上调用 fseek()clearerr() 以便在流上报告 EOF 条件后读取其他数据。

ps 命令的输出列已加宽

由于 UID、处理器 ID 和累积执行时间较大,ps 命令输出的各列已加宽。客户脚本不应采用固定输出列。

解决方法:脚本应使用 ps 命令的 -o 选项。

有关更多信息,请参见 ps(1) 手册页。

命令 ping -v 在 IPv6 地址上不运行 (4984993)

当命令 ping -v 应用于使用 Internet Protocol 版本 6 (IPv6) 的地址时,该命令失败。将显示以下错误消息:


ping: setsockopt IPV6_RECVRTHDRDSTOPTS Invalid argument

解决方法:无。要获得 ping -v 提供的相同 ICMP 包信息,请使用 snoop 命令。