XPG*バージョンのコマンドはいつ使用する必要がありますか?

XPG*バージョンのコマンドはいつ使用する必要がありますか?

grep私は時々、基本バージョンは、次の古いSolarisシステムで動作します。POSIX互換grepコンピュータのデフォルト設定が必要なオプションをサポートしていないため、私のrcファイルに問題があります。

これは私の仕事のマシンであり、私は管理者ではないので、適切だと思われるように、最新/より良いバージョンのコマンドをインストールすることはできません。ところで、このマシンに適切な機能があることがわかりました。XPGgrep/usr/xpg4/bin/grep.

明らかに、次のコマンド(Solarisの場合)を使用してrcファイルの問題を解決できます。

alias grep='/usr/xpg4/bin/grep'

しかし、これを行う必要がないマシンはどうですか?私の目標は、Unixシリーズシステムに挿入して操作できる各シェルにrcファイルを持つことです。

この考えが聞きました...

  1. 使いたくない状況がありますか?XPGコマンドバージョン?
    • それではいつ?
  2. すべてのコンピュータのrcファイル/usr/xpg4/bin/の先頭に盲目的に追加$PATHし、XPG *バージョンの個々のコマンドのエイリアシングを省略することはできませんか?
    • それとも特定のコマンドで問題が発生しますか?
  3. この状況は/usr/xpg4/bin/「必要な」コンピュータにのみ存在しますか?
    • /usr/xpg4/bin/私のUbuntuコンピュータにはこれが存在しないことがわかったので、この質問をします。

概してこれは良い考えですか?

if [ -d "/usr/xpg4/bin" ]; then
  #Place XPG directory at beginning of path to always use XPG version of commands
  export PATH="/usr/xpg4/bin:$PATH"
fi

そうでなければなぜならないのですか?

ベストアンサー1

/bin/usr/bin一部の商用Unixシステムには、POSIX互換ユーティリティを含むディレクトリだけでなく、以前のバージョンと互換性のあるユーティリティもあります。/usr/xpg4/binこのようにして、既存のアプリケーションはおよびPATHのみを使用して/bin既存のアプリケーションに固執することができ/usr/bin、最新のアプリケーションはPATHPOSIXユーティリティを最初に使用できます。 Unixシステムでは、1980年代のユーティリティとの下位互換性が必要でない限り、POSIXユーティリティを使用することをお勧めします。

私は、.profile次のディレクトリを/bin以前と/usr/bin存在する場合に配置しました。

/bin/posix
/usr/bin/posix
/usr/xpg6/bin
/usr/xpg4/bin
/usr/xpg2/bin

これには、少なくともSolaris、Tru64(Digital Unixとも呼ばれ、OSF / 1とも呼ばれます)、およびHP-UXが含まれていると思います。

PATHPATHを自動的に決定する代わりに、次のように呼び出してPOSIX依存関係に適したアプリケーションを見つけることができるはずです。getconf便利:

PATH=$(getconf PATH)

一部のシステム (*BSD や Linux など) は POSIX 互換ユーティリティーのみを提供するため、共通ディレクトリー ( /bin, /usr/bin) にあり、別個のディレクトリーは必要ありません。

おすすめ記事