/proc/self/fd/のタブ補完がリストされているものと比較して、他の完了を表示します。

/proc/self/fd/のタブ補完がリストされているものと比較して、他の完了を表示します。

zshを使用して次のコマンドをタップして完了しようとすると、ls /proc/self/fd/次のようになります。

files
0@   1@   10@  11@  12@  13   2@   3

ただし、Enter(完了しない)を押すと、次のようになります。

> ls /proc/self/fd/
0  1  2  3

現在のシェルのファイル記述子をリストすると、他の結果が表示されます。

> ls /proc/$$/fd/
0  1  10  2

これらの3つの結果が異なる理由は何ですか?

答え1

ls /proc/self/fdプロセス用に開いているファイル記述子を表示することから始めますls。これはls、読み取っているディレクトリの3つの標準入力、出力、およびエラー記述子です。

ls /proc/$$/fdls実行時にシェルでまだ開いているファイル記述子(3つの標準記述子とzsh端末ファイル記述子のコピー)を表示します(10)。

タブ補完にはls /proc/self/fd/開いたファイル記述子が表示されます。その瞬間殻のために。表示された内容に加えて、ls /proc/$$/fdこれには、完了自体のために開かれたファイル記述子(/usr/share/zsh/.../functions完了を実装するファイルのため)も含まれます。

関連情報