いくつかのコマンドを読んでいますが、その中には権限があり、一部はインストールまたはインストールされていない可能性があります。私のシステム(Gentoo)は、プログラムがシステムにあるときに時々コマンドが見つからないと答えます。 Emergencyのような動作をどのように一致させますか?
私が望む行動の例:
$ emerge -av mypackage
This action requires superuser access...
私が現在持っているもの:
$ lspci
bash: lspci: command not found
$ sudo lspci
00:00.0 Host bridge: ...
私は「許可されていない」というメッセージも好むので、sudoを試す必要があることを知っています。もちろん、rootとして実行したくありません。
答え1
含まれているディレクトリがlspci
PATHにない可能性があります。
場所を使用してsudo -i which lspci
パスにディレクトリを追加できます。
可能な場所は、/sbin
または/usr/sbin
現在のPATHに追加するには、次のことを実行できます(Bourneベースのシェルから)。export PATH="$PATH:/usr/sbin:/sbin"
.bashrc
変更を永久に適用するには、またはにエクスポートコマンドを追加します(シェルとして.bash_profile
使用すると仮定)。bash
答え2
lspci
一般ユーザーのコマンド検索パスにないため、見つかりません。ルート以外のユーザーがほとんどまたはまったく効果的に使用できないコマンドは、ルートのコマンド/sbin
検索パスにあるが他のユーザーのコマンド検索パスにはないディレクトリに配置されます。/usr/sbin
/usr/local/sbin
次の関数を定義して、コマンドが見つからないときにbashが実行するアクションを設定できます。command_not_found_handle
。したがって、次の内容を入れることができます.bashrc
。
command_not_found_handle () {
if [[ -x "/sbin/$1" || -x "/usr/sbin/$1" || -x "/usr/local/sbin/$1" ]]; then
echo 1>&2 "bash: $1: command not found, but can be executed as root"
fi
return 127
}