當使用-T和-t運行相同的ssh命令時,任何stderr輸出都分別到達stderr和stdout。爲什麼OpenSSH RequestTTY會導致stderr重定向到stdout?
無PTY分配: ssh -T [email protected] "echo >&2 foo" 1>/tmp/out 2>/tmp/err
輸出寫入/tmp/err
。
隨着PTY分配:ssh -t [email protected] "echo >&2 foo" 1>/tmp/out 2>/tmp/err
輸出現在會被寫入/tmp/out
。
我有點理解,用pty模擬完整的僞屏幕,並且輸出處於原始模式。發送到屏幕的輸出然後通過stdout發送回ssh,並且ssh的tty也被設置爲原始模式。有人可以請進一步解釋嗎?
這就是我想的,謝謝你的解釋。所以stdout和stderr被髮送到tty。我讀過一些地方,當這種情況發生時,調用ssh有一個tty(pty),然後它被放入原始模式。我不再記得有關煮熟與原始模式的所有細節。任何人都可以進一步闡明? – gabor
是的,本地tty(在客戶端)被置於原始模式,因爲遠程pty(ssh分配給註釋的那個)處於熟化模式,您只需要/希望其中一個進行熟化處理。 ..或者如果在遠程系統上運行的應用程序有目的地將(遠程)tty置於原始模式,那是因爲它是一個詛咒/全屏幕/任何應用程序*期望*原始模式一直到用戶。所以,本地tty應該是純粹的。 – Celada