
私は screen を使うのが好きですが、ssh 経由での使用経験はあまりありません。最近、職場でシェル アカウントが発行されたので、ログイン時に screen が実行されるように設定してみることにしました。私は putty を使用して ssh 経由でリモートでログインしています。
とにかく、私は 2 つの方法を試しましたが、どちらもかなりうまく機能しているようでした。
- 接続時に/usr/bin/screen -Rを実行するようにputtyを設定し、
- .bashrc に次の行を追加しました:
if [ -z "$STY" ]; then /usr/bin/screen -R; fi
問題は、後でいくつかのファイルを scp しようとしたのですが、接続できなかったことです。「ターミナルに接続する必要があります」と表示されました。Filezilla も試しましたが、接続に大きな問題がありました。グーグルで調べてみたところ、どうやらログイン シェルとして screen を使用しようとして sftp がおかしくなったのは私が初めてではないようです。http://winscp.net/forum/viewtopic.php?t=1715
なぜこのようなことが起きているのか、誰かに洞察を与えてもらえないかと思っています。まったく見当もつかないので、理解して回避策を見つけたいと思っています。
答え1
ログイン シェルに関連するものはすべて に~/.bash_profile
、対話型 (非ログイン) シェルに関連するものはすべて に配置する必要があります~/.bashrc
。bash(1) のマニュアル ページから:
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
~/.bashrc
したがって、単にシンボリックリンクを作成するのではなく~/.bash_profile
(またはその逆)、多少異なる内容を含む 2 つの別々のファイルを用意する必要があります。
[ -z "$STY" ] && then /usr/bin/screen -R
only を入力すると~/.bash_profile
、対話型シェルを起動するたびに screen が実行されるのではなく、実際にログインしているときにのみ screen が実行されます (現在、手元に scp ソースはありませんが、実際にシェルを起動して、シェルがプロセスを生成したというかすかな記憶があります~/.bashrc
)。