Linuxサーバーにログインするたびに、いくつかのコマンドを自動的に実行したい(変数の設定、場所の変更など)
これは、システムの起動時ではなく、ユーザーログイン時に実行する必要があります。
これを行うにはどうすればよいですか?
コマンドを~/.bashrc
に入れます。そこにあるものはすべて、ログインするたびに実行されます。
Sshを介してログインするときにのみ実行するコマンドが必要な場合(物理的にログインするときは必要ない)、SSH_CONNECTION
環境変数の存在をテストし、存在する場合にのみコマンドを実行することができます。
これをすべてのユーザーに適用したい場合は、これを〜/ .bashrcまたは/etc/bash.bashrcに入れてください。
if [[ -n $SSH_CONNECTION ]] ; then
echo "I'm logged in remotely"
fi
または、ssh
の呼び出し中に実行するコマンドを指定できます。
$ ssh -t server 'cmd; exec bash -l'
リストの最後のコマンドは、優先シェルでインタラクティブセッションを開始する必要があります。実行するコマンドが多い場合は、SSHサーバーにスクリプトファイルを作成することを検討してください。
実は~/.ssh/rc
は、システムのユーザーではなく、yoのログイン時に実行するコマンドを追加するのに最適な場所です。
~/.ssh/rc
Commands in this file are executed by ssh when the user logs in,
just before the user's Shell (or command) is started. See the
sshd(8) manual page for more information.
リモートホストに渡されたコマンドを実行した後のリモートホストへのログイン:
.bashrc
を実行しますリモートホストでbashプロンプトを表示します(エラーがない場合)
$ ssh user@Host "bash -lc cmd; cmd; ..."
-lオプションはログインシェルにします(例:.bashrcを実行)
-cオプションは、bashが実行する明示的なコマンドを提供します