PATHにない場合は、コマンドラインツールをインストールするために使用したいbash機能があります。
ncf(){
if ! type -f ncf &> /dev/null || ! which ncf &> /dev/null; then
echo "Installing NPM package '@oresoftware/ncf' globally...";
npm i -s -g '@oresoftware/ncf' || {
echo -e "Could not install NPM package '@oresoftware/ncf' globally." >&2
echo -e "Please check your permissions to install global NPM packages." >&2
return 1;
}
fi
command ncf $@;
}
いくつかの質問があります。type -f ncf
とがwhich ncf
重複していますか?これで、ゼロ以外の値で終了した項目があるかどうかを確認しています。そのうちの1つが終了したら再インストールします(少なくともコードではそう思います)。
私の他の質問は - &>
4以前のbashバージョン、またはsh、ksh、zshなどのような他のシェルで動作しますか?もう少しクロスプラットフォームである他の設定を使用する必要がありますか&>
?
ベストアンサー1
which
type
完全に間違ったことをしない限り、重複します。使用しないでくださいwhich
敵(kshまたはzshを除く)。また、ポータブルshでは使用しないでくださいtype -f
。これはksh / bash拡張です。type
同じ名前の関数があるにもかかわらず、外部コマンドを見つけるにはプレーンを使用します(unset -f ncf; type ncf)
。
出力をリダイレクトするには、ksh、bash、およびzshでは省略できますが、通常のshでは使用できません>/dev/null 2>&1
。&>/dev/null
if ! type -f ncf >/dev/null 2>/dev/null; then …