RedHatにはbash / gdbオートコンプリートコアファイルがありますが、Ubuntuではそうではありません。

RedHatにはbash / gdbオートコンプリートコアファイルがありますが、Ubuntuではそうではありません。

kernel.core_patternプログラムがコアをダンプするときは、特定のファイル名などを使用して特定の場所にコアファイルを配置するように設定します。

kernel.core_pattern = | /var/core_file_handler.py %e %s %p %lu %g %t

ターゲットディレクトリとサンプルコアファイルは次のとおりです。

$ ls -l /var/cores
drwxr-xr-x 2 root root 4.0K Mar 23 09:42 app

$ ls -l /var/cores/app/
-rw-r--r-- 1 root root 60510208 Mar 23 09:42 2016.03.23_09.42.14.867727_11_SIGSEGV_u

セントOS 6.7

CentOS 6.7にはbash 4.1.2とgdb 7.5があります。

$ bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)

$ gdb --version
GNU gdb (GDB) Red Hat Enterprise Linux (7.5.0.20120926-26.el6)

コアファイルを開きたい場合は、gdbと入力してからタブ完了パスとコアファイル

gdb ./app /var/cores/app/201.... <tab> 

これにより、コアファイル名が正常に完成します。

Ubuntu14.04

Ubuntu 14.04にはbash 4.3.11とgdb 7.7.1があります。

$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)

$ gdb --version
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1

コアファイルを開きたい場合は、gdbと入力してからタブ完了道ですが、コアファイルではありません

gdb ./app /var/cores/app/  <tab> <tab> <tab>....

これはタブなしでコアファイル名を完成。ただ止まって/var/cores/app/もう進まない

  • アクセス権は両方のコンピュータで/var/cores/app同じです。
  • アクセス権は両方のコンピュータで/var/cores/app/core_file同じです。

質問:

私はなぜそれを行うことができますか?タブ完了Core-file-nameはCentOSでは利用できますが、Ubuntuでは利用できませんか?

ベストアンサー1

これはプログラム可能な完成に関連しています。プログラムが処理できないことを排除することで、ユーザーの人生をより簡単にすることができるという考えです。

しかし実際には完成から何かを除外することで完成除外にもかかわらず必然的に使いたいもので終わることになることが多いです。その時点でプログラム可能な完成は役に立つよりも負担になります。

この問題は3つの方法で解決できます。

  • アンロードはプログラムで実行できます。不要な選択機能です。持つあなたがそれを使用したくない場合。あなたはこれを行うことができますapt-get remove bash-completion
  • 何らかの理由でbash完了を削除したくない場合、または削除できない場合は、実行するとすべてのcomplete -r完了ルールが再度削除されます。同様の方法でこれを行うと、ルールが処理さ.bashrcれてから再び削除されるため、bashの起動時にパフォーマンスが低下することを除いて、効果は最初のオプションと同じです。
  • bashが時々ファイル名を完成するように強制するには、代わりにalt+を使用してbashにファイル名の完成を実行させることができます。/tab

おすすめ記事