Linuxでエイリアスが設定されていて、本来のコマンドを実行したいと思ったことはありませんか?
そんなときに便利なのがcommandコマンドです。
commandコマンドを使うと、エイリアスやシェル関数の影響を避けて、本来のコマンドを実行したり、コマンドの情報を確認したりできます。
シェルスクリプトでも頻繁に利用される基本的なシェル組み込みコマンドの一つです。
この記事では、commandコマンドの基本的な使い方から、エイリアスを無視する方法、-v・-Vオプション、typeやwhichとの違いまで初心者向けに分かりやすく解説します。
commandコマンドとは
commandは、シェル組み込みコマンドの一つで、エイリアスやシェル関数を回避してコマンドを実行したり、コマンドの情報を取得したりするために利用します。
エイリアスが設定されている環境でも、本来のコマンドを確実に実行したい場合に役立ちます。
commandコマンドの基本構文
command [オプション] コマンド名
例えば、エイリアスを無視してlsを実行する場合は次のように記述します。
command ls
エイリアスを無視して実行する
例えば次のようなエイリアスが設定されているとします。
alias ls='ls --color=auto'
通常のlsではエイリアスが適用されますが、commandを利用するとエイリアスを介さず実行できます。
command ls
-vオプション
-vオプションでは、コマンドがどこから実行されるかを簡潔に表示できます。
command -v grep
実行例
/usr/bin/grep
ビルトインコマンドやエイリアスの場合は、それに応じた情報が表示されます。
-Vオプション
-Vオプションでは、より詳細な情報を表示できます。
command -V cd
実行例
cd is a shell builtin
シェルスクリプトで利用する例
エイリアスの影響を受けずにコマンドを実行したい場合に便利です。
#!/bin/bash
command rm temp.txt
シェル環境に独自のエイリアスが設定されていても、意図したコマンドを実行できます。
typeコマンドとの違い
| コマンド | 用途 |
|---|---|
command |
エイリアスを回避して実行・確認する |
type |
コマンドの種類や実体を確認する |
実際に実行することを重視するならcommand、コマンドの種類を調べたいならtypeが適しています。
whichコマンドとの違い
| コマンド | 用途 |
|---|---|
command |
エイリアスを回避して実行・コマンド情報を取得する |
which |
主に実行ファイルの場所を確認する |
実行ファイルの場所だけ知りたい場合はwhichでも確認できますが、シェル組み込みコマンドやエイリアスも含めて確認したい場合はcommandの方が便利です。
commandとaliasの関係
aliasを設定している環境では、通常のコマンド実行時にエイリアスが優先されます。
alias rm='rm -i'
rm sample.txt
この場合はrm -iが実行されます。
一方、commandを利用するとエイリアスを無視して実行できます。
command rm sample.txt
スクリプトで意図しないエイリアスの影響を避けたい場合によく利用されます。
PATHとの関係
commandはPATH環境変数を利用して実行ファイルを検索します。
echo $PATH
PATHの設定によって、実際に実行されるコマンドが変わることがあります。
コマンドの場所を確認したい場合は、command -vが便利です。
シェルスクリプトで利用するメリット
シェルスクリプトでは、利用者が独自のエイリアスを設定している場合があります。
その影響を受けずに確実にコマンドを実行したい場合は、commandを利用することで安全性が向上します。
#!/bin/bash
command cp file1.txt backup/
実務でもよく利用される書き方です。
commandはビルトインコマンド
commandはBashなどに組み込まれているシェル組み込みコマンド(ビルトインコマンド)です。
外部プログラムではないため、高速に動作します。
よくあるエラー・注意点
command: ○○: not found と表示される
指定したコマンドが存在しない可能性があります。
スペルやPATH設定を確認してください。
エイリアスが無効にならない
commandはエイリアスを無視しますが、シェル関数が定義されている場合は、そのシェル関数が実行対象となることがあります。
コマンドの種類を確認したい場合は、typeコマンドも併用すると分かりやすくなります。
whichと結果が違う
正常な動作です。
whichは主に実行ファイルを対象としますが、commandはシェル組み込みコマンドやエイリアスの情報も取得できます。
commandは外部コマンドですか?
いいえ。
commandはBashなどのシェルへ組み込まれているビルトインコマンドです。
よくある質問
commandコマンドは何をするコマンドですか?
エイリアスの影響を受けずにコマンドを実行したり、コマンドの情報を確認したりするためのコマンドです。
typeコマンドとの違いは何ですか?
typeはコマンドの種類を確認するためのコマンドです。
commandはエイリアスを回避して実行したり、コマンド情報を取得したりできます。
whichとの違いは何ですか?
whichは主に実行ファイルの場所を表示します。
commandはシェル組み込みコマンドなども含めて確認できます。
シェルスクリプトではよく使われますか?
はい。
エイリアスの影響を避けるために実務でもよく利用されます。
commandはビルトインコマンドですか?
はい。
Bashなどに組み込まれているシェル組み込みコマンドです。
まとめ
commandコマンドは、Linuxでエイリアスやシェル関数の影響を避けながらコマンドを実行したり、コマンドの情報を確認したりするための重要なシェル組み込みコマンドです。
特に次のコマンドは覚えておくと便利です。
| コマンド | 用途 |
|---|---|
command ls |
エイリアスを無視して実行する |
command -v grep |
コマンドの場所を確認する |
command -V cd |
コマンドの詳細情報を表示する |
type ls |
コマンドの種類を確認する |
which grep |
実行ファイルの場所を確認する |
Linuxでコマンドの挙動を正しく把握するためには、「commandでエイリアスを回避して実行 → command -vで場所を確認 → typeで種類を確認 → whichで実行ファイルを調査」という流れを覚えておくと、トラブルシューティングやシェルスクリプト作成で役立ちます。




コメント