Bash
shell 是否會自動將文件描述符 0、1 和 2 連接到其控制終端?
來自 Linux 程式介面
在互動式 shell 中,這三個文件描述符 0、1 和 2 通常指的是執行 shell 的終端。
- “執行shell的終端”是指互動式shell所屬會話的控制終端嗎?
如果是,如果 shell 的會話沒有控制終端怎麼辦? 2. 當 shell 從其父程序創建時,shell 是否會在以下每種情況下自動創建文件描述符 0、1 和 2 與終端之間的連接(繼承自 shell 的父程序):
- 如果“執行 shell 的終端”或控制終端已經在不是 0、1 和 2 的文件描述符上打開?
- 如果文件描述符 0、1 和 2 已經連接到不是“執行 shell 的終端”或控制終端的文件?
- 如果引號中的外殼是非互動式的怎麼辦?
謝謝。
順便說一句,假設“shell”是 POSIX 或 bash。
不。
這是通過 SSH 伺服器的分叉 pty-slave-side 部分、GUI 終端仿真器的分叉 pty-slave-side 部分等的各種實現來完成
getty
的open-controlling-tty
。請注意,引用的文本並不暗示shell 會這樣做。您基於憑空提出的錯誤前提提出了一大堆問題。
而且您知道這樣
getty
做,因為您在與此問題同時編寫的“登錄領導的程序會話何時開始? ”中寫道。進一步閱讀
- getty 和 getty 和有什麼不一樣?
- 使用 systemd 的“askfirst”getty(“按輸入鍵啟動此控制台”)
- 喬納森·德博因·波拉德。“虛擬終端登錄”。小吃指南。軟體。
- 喬納森·德博因·波拉德。“真實終端登錄”。小吃指南。軟體。