下一节介绍 Solaris 10 OS 中某些命令和标准的行为变化。
此发行版中修订了以下 Solaris 高可靠扩展版手册页:
add_allocatable(1M)
remove_allocatable(1M)
label_to_str(3TSOL)
tsol_getrhtype(3TSOL)
tnzonecfg(4)
无法使用 man 命令查看已修订的手册页。要查看已修订的手册页,请参见《Solaris Trusted Extensions Reference Manual》。
Solaris 10 OS 包含 Bash 2.0.5b。此 shell 不再自动导出下列环境变量:
HOSTNAME
HOSTTYPE
MACHTYPE
OSTYPE
即使 shell 为这些变量分配缺省值,此新行为也适用。
解决方法:手动导出这些变量。
/usr/bin/ln 的行为已更改为符合从 SVID3 到 XCU6 的所有标准。如果使用不带 -f 选项的 ln 命令链接至现有目标文件,则无法建立链接。而是将诊断消息写入标准错误,且该命令继续链接任何其他源文件。最后,ln 命令退出,并显示错误值。
例如,如果文件 b 存在,语法 ln a b 生成以下消息:
ln: b: File exists |
此行为更改影响包含不带 -f 选项的 ln 命令的现有 shell 脚本或程序。过去运行的脚本现在在 Solaris 10 OS 中可能失败。
解决方法:将 -f 选项与 ln 命令一起使用。如果有执行链接实用程序的现有脚本,请确保修改这些脚本以符合命令的新行为。
在 Solaris 10 OS 中,tcsh 已升级为版本 6.12。此版本不再接受名称中使用破折号或等号的环境变量。包含 setenv 行且在 Solaris 早期版本中起作用的脚本在当前 Solaris 10 发行版中可能生成错误。将显示以下错误消息:
setenv: Syntax error |
有关更多信息,请参阅 Solaris 10 OS 的 tcsh 手册页。
解决方法:不要在环境变量名称中使用破折号或等号。
在严格符合 C 标准的模式下生成的应用程序可能受某些库功能的行为更改的影响。例如,使用 cc -Xc 或 c89 编译模式编译的应用程序。下列库功能的行为已更改:
fgetc()
fgets()
fgetwc()
fgetws()
getc()
getchar()
gets()
getwc()
getwchar()
getws()
1990 C 标准的正式解释要求在设置文件结束条件后,后续输入操作中的文件不返回更多数据。例外情况是文件指针被重新定位或者应用程序已显式清除错误和文件结束标志。
所有其他编译模式的行为都保持不变。特别地,接口可在设置文件结束指示符后从流读取其他新写入的数据。
解决方法:在流上调用 fseek() 或 clearerr() 以便在流上报告 EOF 条件后读取其他数据。
由于 UID、处理器 ID 和累积执行时间较大,ps 命令输出的各列已加宽。客户脚本不应采用固定输出列。
解决方法:脚本应使用 ps 命令的 -o 选项。
有关更多信息,请参见 ps(1) 手册页。
当命令 ping -v 应用于使用 Internet Protocol 版本 6 (IPv6) 的地址时,该命令失败。将显示以下错误消息:
ping: setsockopt IPV6_RECVRTHDRDSTOPTS Invalid argument |
解决方法:无。要获得 ping -v 提供的相同 ICMP 包信息,请使用 snoop 命令。