命令がインストールされているかどうかを確認する方法を知りたいです。
vi
特に、コマンドが有効なすべてのシステムでエイリアスを使用したいと思いますvim
。vim
私の* rcファイルを普通に保ちたいです。ただし、一部のオペレーティングシステムはデフォルトでインストールしませんvim
。そして他の面では、vi
はいViは改善されましたが、vim
有効なコマンドではありません。
私はこれを行うことができると思います(bashスタイル):
#If the version info from vi includes the phrase "Vi IMproved", then vi IS vim.
vimInfo=$(vi --version 2> /dev/null | head -n 1 | grep -Fi 'VI IMPROVED')
if [[ -z $vimInfo ]]; then
if [[ -f $(which vim) ]]; then
#if the value returned by 'which' is a valid directory, then vim is installed
alias vi='vim'
else
#vim is not installed
echo "Vi IMproved (vim) is not installed";
fi
fi
しかし、もっと良い方法がありますか?このwhich
コマンドは、すべてのUNIXシリーズシステムに表示されることが保証されていますか?
PS私はほとんどすべての人気シェル(bash、tcsh、zsh、ksh)の* rcファイルを持っており、このソリューションをすべてのシェルに適用する予定です。したがって、ソリューションはシェルに限定されるべきではありません。文法できるしかし、そうです。
ベストアンサー1
たとえば、次のようになりますcommand
。
command -v vim
シェル組み込みコマンドです。 (zsh、bash、ksh、しかし、tcsh)
存在するtcsh以下を使用できます。
~> sh -c 'command -v vim'