あるマシンから別のマシンにSSHで接続した後、毎回コマンドを実行するにはどうすればよいですか?
例えば
ssh mymachine
stty erase ^H
ssh接続が完了した後は毎回「sttyerase^H」を実行したいだけです。
このコマンドは、単に私の.zshrcファイルに入ることができません。つまり、ローカルセッションの場合、コマンドを実行できません(キーバインドが台無しになります)。ただし、リモートセッションで実行する必要があります。
あるマシンから別のマシンにSSHで接続した後、毎回コマンドを実行するにはどうすればよいですか?
例えば
ssh mymachine
stty erase ^H
ssh接続が完了した後は毎回「sttyerase^H」を実行したいだけです。
このコマンドは、単に私の.zshrcファイルに入ることができません。つまり、ローカルセッションの場合、コマンドを実行できません(キーバインドが台無しになります)。ただし、リモートセッションで実行する必要があります。
コマンドを入れる~/.ssh/rc
シェルの起動ファイルに次のようなものを入れることができます:
if [ -n "$SSH_CONNECTION" ]
then
stty erase ^H
end
この-n
テストはSSH_CONNECTION
、SSH 経由でログインした場合にのみ発生する が設定されているかどうかを判断します。
シェルを使用して *nix ボックスにログインしている場合は、それをシェルのスタートアップに入れてみませんか?
.bashrc
または.profile
ほとんどの場合。
Linuxターゲットを想定して、それをあなたの.profile
~/.bashrc の最後にコマンドを追加してみてください。ログオフ時に終了する必要があります。ssh セッションからログオフするときにのみこのコマンドを実行しますか? ローカルセッションなどはどうですか?
trap 'stty erase ^H; exit 0' 0
おそらく、これと同じパターンを使用して /etc/profile から .logout ファイルをセットアップすることもできます。
screen/byobu ユーザーの私たちへの回答:
画面が「端末に接続する必要があります。」と不平を言うため、ジオカーのソリューションは機能しません。(これはおそらく、シェルが開始される前に.ssh/rc が処理されることが原因です。 のLOGIN PROCESSセクションを参照してくださいman 8 sshd
)。
ここでは Robert のソリューションの方が優れていますが、screen と byobu は独自の bash インスタンスを開くため、無限再帰を避ける必要があります。そこで、屏風に合わせて調整したバージョンを以下に示します。
## RUN BYOBU IF SSH'D ##
## '''''''''''''''''' ##
# (but only if this is a login shell)
if shopt -q login_shell
then
if [ -n "$SSH_CONNECTION" ]
then
byobu
exit
fi
fi
exit
afterも追加したことに注意してくださいbyobu
。そもそも byobu を使用する場合、IMO は通常、それ以外で何もしたくないからです。