
私のデフォルトのインストールはDebian 8.1です。はい
su
man apt<TAB>
しかし、何も得られませんでした。ユーザーmasとrootの2つのモードで作成するときにマニュアルを表示しますman apt-get
。ただし、タブ補完はユーザーモードでのみ機能します。
ルートでmanを実行した後にテーブルの完成を有効にする方法は?この機能がデフォルトで無効になっているのはなぜですか?
答え1
実行すると、su
非ログインモードでbashが呼び出されます。その後、Bash は.bashrc
その環境を読み、設定します。
実行すると、su -
bashはログインシェルとして呼び出されます。このモードでは、/etc/profile
存在する場合に実行されます。 Bashはまた、~/.bash_profile
見つかった最初のファイルを検索して実行します。文書化されていないが、これらのいずれも存在しない場合に実行されるようです。~/.bash_login
~/.profile
~/.bashrc
他の動作が発生した場合は、bashの呼び出し方法に応じて異なるファイルを使用してbashを初期化できます。
echo .bashrc
既存のファイルの末尾に同様の行を追加して、どのファイルを呼び出すかをテストしました。これにより、どの設定が呼び出されるかが表示されます。
マニュアルページのINVOCATIONセクションにこの動作の詳細がありますbash
。
ではタブ補完機能を使用できますが、bash
通常、シェルではシェルを使用できない場合がありますsh
。ユーザーは通常これをシェルとして使用します。 root
sh
bash
bash
bash
root
タブを完成させる前にやったように実行してみてください。これにより、タブ補完が有効になります。
答え2
Bashには2つの完成エンジンがあります。 1つは主にコマンドの場所のコマンドとパラメータの場所のファイル名だけを完成させる単純なエンジン、もう1つはコマンドに基づいてパラメータを完成するユニークなエンジンです。マニュアルページを完成させるには、美しいマニュアルページが必要です。
Bashを起動すると、単純な完成エンジンのみがアクティブになります。良いエンジンを得るために/etc/bash_completion
。
Debianでは、readディレクティブは新しいアカウントのデフォルト設定に/etc/bash_completion
あります.bashrc
が、システム設定ファイルにはありません/etc/bash.bashrc
。ユーザーがそれを選択解除できないように、システム構成ファイルには保存されません。シェルの高度な完成システムをrootとして実行するには、次の行を追加する必要があります/root/.bashrc
。
. /etc/bash_completion