【 enable 】コマンド――ビルトインコマンドの有効/無効を切り替える:Linux基本コマンドTips(224)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ビルトインコマンドの有効/無効を切り替える「enable」コマンドです。
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はbashのビルトインコマンド(内部コマンド、シェルコマンド)の有効/無効を切り替える「enable」コマンドです。
enableコマンドとは?
「enable」は、bashのビルトインコマンドを無効にしたり、有効に戻したりするコマンドです。ビルトインコマンドと同名の実行可能ファイルを起動したい場合などに使います。
enable自身もbashのビルトインコマンドです。
enableコマンドの書式
enable [オプション] [コマンド名...]
※[ ]は省略可能な引数を示しています
enableの主なオプション
短いオプション | 意味 |
---|---|
-a | 全てのビルトインコマンドについて有効(enable)か無効(enable -n)かを表示する |
-n コマンド名 | 指定したコマンドを無効にする(コマンド名を指定しなかった場合は無効になっているコマンドを一覧表示) |
-p | 有効なビルトインコマンド一覧を表示する |
-s | POSIXで定義されているビルトインコマンドだけを表示する |
ビルトインコマンドを無効にする
「enable -n コマンド名」で指定したビルトインコマンドを無効にします。「enable コマンド名」で有効に戻します。
/binや/usr/binなどには、ビルトインコマンドと同じ名前の実行可能ファイル(外部コマンド)が存在する場合があります。コマンド名だけを指定して実行した場合、ビルトインコマンドを優先します。外部コマンドを意識的に実行したい場合は、パス付きで指定する必要があります(※1)。
enableコマンドでビルトインコマンドを無効にすると、パスを指定しなくても外部コマンドを実行します。
※1 あるコマンドを実行した場合、bashはエイリアスを最優先する(ビルトインコマンドとコマンドの優先順位)。次いでビルトインコマンド、最後に環境変数PATHに登録された実行可能なファイルを順に呼び出す。エイリアスやビルトインコマンド以外のコマンドを実行したい場合は、パスを直接指定するか、enableコマンドを用いる。ビルトインコマンドを実行したいときはbuiltinコマンド(連載第153回)を使う。なお、typeコマンド(第13回)を用いると、指定したコマンドがビルトインコマンドなのか、といった情報を表示できる。
コマンド実行例
enable -n コマンド名
(指定したビルトインコマンドを無効にする)
enable -n test
(testコマンドを無効にする)
画面1では、testコマンドを無効にしたときの様子を調べています。testコマンドはビルトインコマンドと外部コマンド(/bin/test)のどちらであってもほとんどのオプションが共通です(※2)。しかし、シェルオプションが設定されているかどうかを調べる「-o」オプションは外部コマンドの場合使用できません。
なお、同名の外部コマンドがない場合、単に指定したビルトインコマンドが使用できなくなります。例えば「enable -n history」とした場合、historyコマンドが使用できなくなります(画面2、※3)。
※3 上下矢印キーや「!番号」による履歴呼び出しには影響がない。
ビルトインコマンドの状態を一覧表示する
ビルトインコマンドの状態を一覧表示するには「-a」オプションを使い「enable -a」とします(画面3)。「-n」オプションでコマンド名を指定しないと、無効になっているビルトインコマンドだけを一覧表示します。
コマンド実行例
enable -a
(全てのビルトインコマンドの状態を一覧表示する)(画面3)
enable -n
(無効になっているビルトインコマンドを一覧表示する)
筆者紹介
西村 めぐみ(にしむら めぐみ)
PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.