シェルスクリプトの場合は、パスに関係なく実行可能ファイルを名前で呼び出す必要があります。これまで、このコードは正しい名前を報告しています。
tmpprog=`which program`
prog=${tmpprog%%*/}
if $prog=""
then
echo >&2 "Main Program not found"
else
echo >&2 "$prog"
fi
実行可能ファイル名を保持し、パスを1行に削除するためにパスをトリミングできるようにコードをどのように切り捨てますか?
注:basename
混合環境(windozeのcygwin / busybox)で作業している可能性があり、時にはパスにスペースがあるため、これは行われません。
答え1
program
コマンドとして使用できることを確認したら、次の手順を実行します。
#! /bin/sh -
hash program || exit
# use program now:
program with its args
私はそれを使用していますhash
エラーを報告するcommand -v > /dev/null
代わりに保存内容が見つからない場合は、自分で行う必要があります。いずれにせよ、hash
program
使いたくないwhich
。