為什麼 screen 會導致 sftp 出現問題?

為什麼 screen 會導致 sftp 出現問題?

我喜歡使用 screen,但我還沒有太多透過 ssh 使用它的經驗。在工作中,我最近獲得了一個 shell 帳戶,我決定嘗試配置它,以便在我登入時運行螢幕。我正在使用 putty 透過 ssh 遠端登入。

無論如何,我有兩種方法似乎都效果很好:

  1. 將 putty 配置為在連線時執行 /usr/bin/screen -R 並
  2. 將此行添加到我的 .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)。

相關內容