PATHにない場合は、コマンドラインツールをインストールしてください。

PATHにない場合は、コマンドラインツールをインストールしてください。

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

whichtype完全に間違ったことをしない限り、重複します。使用しないでください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 …

おすすめ記事