
我喜歡使用 screen,但我還沒有太多透過 ssh 使用它的經驗。在工作中,我最近獲得了一個 shell 帳戶,我決定嘗試配置它,以便在我登入時運行螢幕。我正在使用 putty 透過 ssh 遠端登入。
無論如何,我有兩種方法似乎都效果很好:
- 將 putty 配置為在連線時執行 /usr/bin/screen -R 並
- 將此行添加到我的 .bashrc 中:
if [ -z "$STY" ]; then /usr/bin/screen -R; fi
問題是後來我嘗試 scp 一些無法連線的檔案。它說“必須連接到終端”。我也嘗試過 Filezilla,但它有嚴重的連線問題。我做了一些谷歌搜索,顯然我不是第一個因嘗試使用 screen 作為登錄 shell 而使 sftp 陷入混亂的人。http://winscp.net/forum/viewtopic.php?t=1715
我想知道是否有人可以提供一些關於為什麼會發生這種情況的見解,因為我真的不知道,我有興趣了解它,也許找到解決方法。
答案1
您應該將與登入 shell 相關的任何內容放入~/.bash_profile
,並將與互動式(非登入) shell 相關的內容放入~/.bashrc
。來自 bash(1) 的手冊頁:
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
因此,您應該有兩個單獨的文件,其中包含一些不同的內容,而不是僅僅符號連結~/.bashrc
(或反之亦然)。~/.bash_profile
[ -z "$STY" ] && then /usr/bin/screen -R
僅放入,~/.bash_profile
然後只有在實際登入時才會運行螢幕,而不是每次生成互動式 shell 時都運行螢幕(我現在手邊沒有 scp 來源,但對此有一個模糊的記憶)實際上生成了一個shell ,以便該shell 產生了進程~/.bashrc
)。