commandコマンドとは?Linuxでエイリアスを無視してコマンドを実行する方法

Linux

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で実行ファイルを調査」という流れを覚えておくと、トラブルシューティングやシェルスクリプト作成で役立ちます。

コメント

タイトルとURLをコピーしました