次の節では、Solaris 10 OS における特定のコマンドと標準の動作変更について説明します。
入出力が保留状態になっているために cfgadm -c unconfigure コマンドが失敗することがあります。変更されたカーネルでは、このコマンドはオフラインで再試行されます。ただし、cfgadm の構成解除コマンドがあとで成功し、それがユーザーに通知されない場合があります。
回避方法: cfgadm -al コマンドを実行します。
Solaris 10 OS には Bash 2.0.5b が含まれていますが、このシェルでは次の変数が自動的には環境にエクスポートされなくなりました。
HOSTNAME
HOSTTYPE
MACHTYPE
OSTYPE
この動作変更は、シェルによってこれらの変数にデフォルト値が割り当てられる場合にも適用されます。
回避方法: これらの変数を手動でエクスポートしてください。
/usr/bin/ln の動作は、SVID3 から XCU6 までのすべての標準に準拠するように変更されました。-f オプションの付かない ln コマンドを使用して既存のターゲットファイルにリンクすると、リンクは確立されません。代わりに、診断メッセージが標準エラーに書き込まれ、残りのリンク元ファイルのリンクが続行されます。最後に、ln コマンドはエラー値を返して終了します。
たとえば、ファイル b がある場合、構文 ln a b を実行すると、次のメッセージが生成されます。
ln: b: ファイルが存在します。 |
この動作変更は、-f オプションの付かない ln コマンドを含む既存のシェルスクリプトやプログラムに影響します。このため、以前正常に動作していたスクリプトが Solaris 10 OS では失敗することがあります。
回避方法: ln コマンドには -f オプションを付けて使用してください。ln ユーティリティーを実行する既存のスクリプトがある場合は、必ずコマンドの新しい動作に適合するようにこれらのスクリプトを変更してください。
Solaris 10 OS では、tcsh はバージョン 6.12 にアップグレードされました。このバージョンは、名前にハイフンや等号が使われている環境変数を受け入れなくなりました。setenv 行を含み、以前の Solaris バージョンで動作するスクリプトを現在の Solaris 10 リリースで実行すると、エラーが生成されることがあります。次のエラーメッセージが表示されます。
setenv: 文法が間違っています。 |
詳細は、Solaris 10 OS 用の tcsh のマニュアルページを参照してください。
回避方法: 環境変数名にハイフンや等号を使用しないでください。
厳しい標準 C 準拠モードで作成されたアプリケーションは、一部のライブラリ関数の動作変更による影響を受けます。たとえば、cc -Xc または c89 準拠モードでコンパイルされたアプリケーションがこれに当たります。動作が変更されたライブラリ関数は次のとおりです。
fgetc()
fgets()
fgetwc()
fgetws()
getc()
getchar()
gets()
getwc()
getwchar()
getws()
1990 C 標準の正式な解釈では、ファイル終了条件が設定されたら、それ以降の入力操作ではファイルからデータを返さないようにする必要があります。ただし、ファイルポインタの位置を変更したり、アプリケーションによってエラーとファイル終了フラグが明示的にクリアされている場合は例外です。
ほかのすべての準拠モードの動作は変わりません。特に、このインタフェースでは、ファイル終了インジケータの設定後に、新しく書き込まれた追加データをストリームから読み取ることができます。
回避方法: ストリームのファイル終了条件が報告されたあとで追加データを読み取るには、ストリームに対して fseek() または clearerr() を呼び出します。
UID、プロセッサ ID、および累積実行時間が大きくなったため、ps コマンドの出力列が広くなりました。カスタムスクリプトは、出力列が固定されていると仮定しないようにするべきです。
回避方法: スクリプトでは ps コマンドの -o オプションを使用するようにしてください。
詳細は、ps(1) のマニュアルページを参照してください。
コマンド ping -v は、インターネットプロトコルバージョン (IPv6) を使用するアドレスに適用されると失敗します。次のエラーメッセージが表示されます。
ping: setsockopt IPV6_RECVRTHDRDSTOPTS Invalid argument |
回避方法: ありません。ping -v によって得られるのと同じ ICMP パケット情報を取得するには、snoop コマンドを使用します。