GNU/Linux >> Linux の 問題 >  >> Linux

`source`の後にコマンド名を入力するとオートコンプリートが機能しないのはなぜですか?

ソース PATHを検索します デフォルトで。

ただし、bashでは、 source の後にコマンド名を入力すると、オートコンプリートは機能しません。 。

一般に、 PATHに基づくオートコンプリートはいつ行われますか 動作しますが、いつ動作しませんか?

source に引数を入力するときに、どうすれば機能させることができますか ?

ありがとう。

承認された回答:

ソース bash 組み込みコマンド)はファイル名を取ります 口論; PATH検索は、指定されたファイル名が見つからない場合にのみトリガーされます。したがって、 source foo 最初に./fooを開こうとします それが失敗した場合にのみ、 / path / dir / fooを探します。 。現在のディレクトリに存在するファイル名でタブ補完を試すか、目的のコマンドへのパスを指定してください。期待どおりにタブ補完する必要があります。

  • 目的を達成するための最も簡単な方法は、タブ補完がcomplete-filenameを試行していることを認識することです。 ただし、完全なコマンドが必要です 。 complete-commandをトリガーできます M-!で キーバインド別名Alt+! 。 ( READLINEを参照してください セクション、完了 サブセクション、 man bash その他の完了関数とデフォルトのキーバインドについては、bashのオンラインドキュメントを参照してください。)

  • 難しい方法は、 sourceに対してトリガーされるデフォルトの完了関数を修正することです。 の完全なファイル名の両方を呼び出す最初の引数 および完全なコマンド 関数。 help completeをご覧ください (コマンドラインで)、 Programmable Completion man bashのサブセクション およびbashオンラインドキュメント、および complete 組み込みコマンド。

一般に、タブ補完は定位置であり、コマンドラインのどこにいるかに基づいてさまざまな補完関​​数を呼び出します。 Archシステムでは、パッケージは完了ファイルを / usr / share / bash-completionにインストールできます。 実行可能ファイルにコンテキスト対応の補完を提供します。


Linux
  1. Linux –Setuidが機能しないのはなぜですか??

  2. Linux –ロケールEs_mxは機能するがEsは機能しないのはなぜですか?

  3. なぜ`exit&`が機能しないのですか?

  1. Tomcat がポート 8080 で動作するのに 80 で動作しないのはなぜですか?

  2. Bash:子スクリプトが SIGINT をトラップするときに親スクリプトが SIGINT で終了しないのはなぜですか?

  3. Rust ツールチェーンを Docker にインストールすると、Bash の「source」コマンドが機能しません

  1. 正規表現がXで機能するのに、Yでは機能しないのはなぜですか?

  2. 一部のコマンドでBashプロセス置換が機能しないのはなぜですか?

  3. パターン マッチが bash スクリプトで機能しない