web-dev-qa-db-ja.com

シェルでオートコンプリートが機能しないのはなぜですか?

私はLinuxにあまり興味がなく、次の疑問があります。クライアントから、SSH経由でアクセスするUbuntu 18.04.3 LTS仮想マシンが提供されました。 (SSHクライアントとしてMobaxTermを使用していますが、問題にはなりません。)使用されているシェルはshです。

問題は、シェルでオートコンプリート機能が期待どおりに機能しないことです。 Tab キー。

それは単に古典的なタブの空白を置くだけです。

どうして?この構成を変更するにはどうすればよいですか?

5
AndreaNobili

shは、Ubuntuのdashによって提供されます。bashzshを含む多くのシェルには、対話式で簡単に使用できる高度な機能があります。 dashは意図的にかなり最小限に抑えられており、そのような機能は提供していません。特に、タブ補完は提供されません。

シンプルなUbuntuシステムでも、必須パッケージと見なされているため、通常はbashがインストールされています。別のパッケージが依存している場合以外でも、それが存在すると想定できるはずです。通常、bashはUbuntuのデフォルトユーザーシェルです。つまり、新しいユーザーがデフォルトで取得するログインシェルですが、これは再構成できます。

bashまたはインタラクティブに使用するのに最適な別のシェルを使用することをお勧めします。 bashが利用可能かどうかは、VMを実行して確認できます。

_bash
_

_$PATH_が適切に設定されていると仮定すると、利用可能な場合はbashが実行されます。タブ補完がbashで機能することを確認できます-機能する必要がありますが、確認しない理由はありません-その後、次の2つの方法のいずれかでタブ補完を取得します。

  • タブ補完やその他のbash機能が必要な場合は、bashを実行するだけです。
  • bashコマンドを使用して、ユーザーアカウントのログインシェルをchshに変更できます。

_bash-completion_と呼ばれる別のパッケージがあり、これも通常インストールされていることに注意してください。これにより、プログラム可能なタブ補完が提供されます。つまり、コンテキストによって異なり、たとえば、フラグやコマンドの他の構文について知っているタブ補完があります。 bashはインストールできますが、_bash-completion_はインストールできません。

(特定のパッケージ--bash、_bash-completion_、またはその他のものがインストールされているかどうかを確認するには、_apt list package-name_を使用できます。パッケージの詳細については、_apt show package-name_および_apt policy package-name_。)

7
Eliah Kagan