Solaris 10 6/06 版本說明

Solaris 指令和標準

以下小節旨在說明 Solaris 10 作業系統中某些指令和標準之運作方式的變更。

Bash 2.0.5b 不再設定部分環境變數

Solaris 10 作業系統包含 Bash 2.0.5b。此 shell 不再自動匯出下列環境變數:

即使 shell 為這些變數指定了預設值,仍會套用此新的運作方式。

解決方法:手動匯出這些變數。

新的 ln 公用程式需要 -f 選項

/usr/bin/ln 的運作方式已變更為遵循 SVID3 至 XCU6 的所有標準。當您使用未帶有 -fln 指令來連結到現有的目標檔時,連結將不會被建立。相反地,診斷訊息會寫入到標準錯誤,而且指令會繼續連結任一個留存的來源檔。最後, ln 指令會結束,並會產生一個錯誤值。

例如,如果檔案 b 存在,則語法 ln a b 會產生下列訊息:


ln: b: File exists

此運作方式的變更會影響現有 shell 程序檔或其中包含未帶有 -f 選項之 ln 指令的程式。過去可以使用的的程序檔現在在 Solaris 10 作業系統中可能無法運作。

解決方法:-f 選項搭配 ln 指令一起使用。如果現有的程序檔是用於執行連結公用程式,請務必修改這些程序檔以符合指令的新運作方式。

新的 tcsh 拒絕使用破折號或等號的 setenv 變數名稱

在 Solaris 10 作業系統中,tcsh 已升級至版本 6.12。此版本不再接受使用破折號或等號做為名稱的環境變數。運作於較早 Solaris 版本中且包含 setenv 行的程序檔在目前的 Solaris 10 發行版本中可能會產生錯誤。螢幕上將顯示下列錯誤訊息:


setenv: Syntax error

如需更多資訊,請參閱 Solaris 10 作業系統的「tcsh 線上手冊」。

解決方法:請勿在環境變數的名稱中使用破折號或等號。

STDIO getc 系列 EOF 條件運作方式變更

某些程式庫函數的運作方式變更,將會影響到以嚴格的標準 C 一致性模式建置而成的應用程式。例如使用 cc -Xcc89 編譯模式編譯而成的應用程式。下列程式庫函數的運作方式已變更:

1990 C 標準的正式轉譯要求,檔案結尾條件設定之後,後續的輸入作業不會從該檔案傳回任何資料。但當檔案指標的位置已重設或應用程式已明確地清除了錯誤或檔案結尾旗標時不在此列。

所有其他編譯模式的運作方式則維持不變。特別是,在檔案結尾指示器設定之後,介面可以從串流讀取新寫入之額外資料。

解決方法:在串流上報告 EOF 條件之後,請於串流上呼叫 fseek()clearerr(),以讀取其他資料。

ps 指令的輸出欄已加寬

由於 UID 和處理器 ID 愈來愈長,且累計執行時間也變久,因此加寬了 ps 指令的輸出。客戶程序檔不應假設輸出欄為固定。

解決方法:程序檔應使用 ps 指令的 -o 選項。

如需更多資訊,請參閱「ps(1) 線上手冊」。

指令 ping -v 對 IPv6 位址沒有作用 (4984993)

執行指令 ping -v 時,若對象為使用網際網路通訊協定版本 6 (IPv6) 的位址,此指令將會失敗。螢幕上將顯示下列錯誤訊息:


ping: setsockopt IPV6_RECVRTHDRDSTOPTS Invalid argument

解決方法:無。若要取得與 ping -v 所提供之相同的 ICMP 封包資訊,請使用 snoop 指令。