【 command 】コマンド――エイリアスや関数以外のコマンドを実行するLinux基本コマンドTips(367)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、エイリアスや関数以外の指定したコマンドを実行する「command」コマンドです。

» 2019年12月27日 05時00分 公開
[西村めぐみ@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、エイリアスや関数以外の指定したコマンドを実行する「command」コマンドについて紹介します。

commandコマンドとは?

 「command」はエイリアスや関数以外の指定したコマンドを実行するコマンドです。「type」コマンドと同様、シェルが実際には何を実行するのかを表示することもできます。

 commandコマンドはbashの内部コマンド(ビルトインコマンド、シェルコマンド)です。このため、「man」コマンドではなく、helpコマンドや「man bash」の結果から、詳細を確認します。



コマンドの書式

command [オプション] コマンド [コマンドのオプションや引数]

※ [ ]は省略可能な引数を示しています。




commandの主なオプション

短いオプション 意味
-p コマンドを探すパスを指定する(通常は環境変数PATHを使用)
-v 「コマンド」を実行せず、実行対象となるコマンドやファイル名、エイリアスの定義を表示する
-V 「コマンド」を実行せず、実行対象となるコマンドの詳細な情報を表示する(「type コマンド」相当)


エイリアスや関数以外のコマンドを実行する

 「command コマンド」で、「コマンド」という名前の関数やエイリアスを無視して、「コマンド」という名前の内部コマンドか外部コマンドを環境変数PATHに従って実行します。

 例えば、CentOSでは、デフォルトで「ls」というエイリアスが設定されています。「ls」を実行すると、エイリアスを実行しますが、「command ls」とすると、エイリアスではなく「/usr/bin/ls」そのものを実行します(※1)。

※1 Ubuntuの場合もlsというエイリアス(ls --color=auto)が設定されている。外部コマンドのlsは「/bin/ls」にあり、CentOSとはパスが違うものの、commandコマンドの効果は同じだ。



 オプションや引数がある場合はコマンド名に続けて指定します。例えば「command ls -l /bin」で、「/usr/bin/ls -l /bin」を実行します。

コマンド実行例

command ls

(エイリアスや関数ではなくlsコマンドそのものを実行する)

command ls -l /bin

(「ls -l /bin」を実行する)


 画面1では、どのコマンドを起動するのかを表示するtypeコマンドを使って、通常時の実行内容を確認しています。

画面1 画面1 エイリアスを無視して外部コマンドを起動したところ

 エイリアスを無視して元のコマンドを実行する方法は、commandコマンド以外にも幾つかあります。まず、「\ls」や「"ls"」のようにエスケープすることで、エイリアスではなくコマンドそのものを実行します。しかし、指定したものと同名の関数があった場合は、関数を実行してしまいます。

 外部コマンドを実行したい場合に限り、commandコマンドを使わなくても「/usr/bin/ls」のようにパス名を指定することで、エイリアスや関数ではなくコマンドそのものを実行できます。

 さらに「builtin」コマンド(連載第153回)を使うと、エイリアスと内部コマンドの両方で同じ名前のコマンドが見つかった場合、内部コマンドを実行します。しかし、builtinコマンドでは外部コマンドを実行することはできません。



関数とコマンドのどちらを呼び出すのか確認する(参考)

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。