grep
私は時々、基本バージョンは、次の古いSolarisシステムで動作します。POSIX互換。grep
コンピュータのデフォルト設定が必要なオプションをサポートしていないため、私のrcファイルに問題があります。
これは私の仕事のマシンであり、私は管理者ではないので、適切だと思われるように、最新/より良いバージョンのコマンドをインストールすることはできません。ところで、このマシンに適切な機能があることがわかりました。XPGgrep
/usr/xpg4/bin/grep
.
明らかに、次のコマンド(Solarisの場合)を使用してrcファイルの問題を解決できます。
alias grep='/usr/xpg4/bin/grep'
しかし、これを行う必要がないマシンはどうですか?私の目標は、Unixシリーズシステムに挿入して操作できる各シェルにrcファイルを持つことです。
この考えが聞きました...
- 使いたくない状況がありますか?XPGコマンドバージョン?
- それではいつ?
- すべてのコンピュータのrcファイル
/usr/xpg4/bin/
の先頭に盲目的に追加$PATH
し、XPG *バージョンの個々のコマンドのエイリアシングを省略することはできませんか?- それとも特定のコマンドで問題が発生しますか?
- この状況は
/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
、最新のアプリケーションはPATH
POSIXユーティリティを最初に使用できます。 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が含まれていると思います。
PATH
PATHを自動的に決定する代わりに、次のように呼び出してPOSIX依存関係に適したアプリケーションを見つけることができるはずです。getconf
便利:
PATH=$(getconf PATH)
一部のシステム (*BSD や Linux など) は POSIX 互換ユーティリティーのみを提供するため、共通ディレクトリー ( /bin
, /usr/bin
) にあり、別個のディレクトリーは必要ありません。