SSHリモートセッションを使用するときにbash設定を読む方法

SSHリモートセッションを使用するときにbash設定を読む方法

私の仮想マシンにデプロイしたいNode.jsアプリケーションがあります。アプリケーションを起動する前に、アプリケーションが起動する前に読まなければならないいくつかのコマンドを設定したいと思います。

.bashrcローカル環境と同様に、このコマンドを内部に配置しました。

コマンド例は次の場所にあります。.bashrc

export TOY_DIR=~/work/git/toyPlayer
export TOY_PLAYER_ENV=dev

.. を使用すると、node app.js環境が見つからないというエラーが表示されます。それでも私のローカルボックスではうまくいきます。

インターネット検索後にこのコマンドを試しました。

tmux
node app.js

ノードサーバーは正常に起動しますが、今はtmuxシェルを終了できません。 CTRL + Cを使用して終了しましたが、ノードサーバーが停止しました。

PS:リモートでログインでき、動作することを知っています。しかし、私はコマンドラインを使ってタスクを実行する方法を学びようとしています。

これを達成するためのベストプラクティスは何ですか?

ポリフェニレンスルフィド:シェルがSSHによって制御されているかどうかを検出したくありません。 Nodeアプリケーションを起動する前に、いくつかの変数をエクスポートしたいと思います。これらの変数は環境変数であり、私のアプリケーションに存在するconfig.jsから読み取られます。

以下は、環境変数の使用方法の例です。

var env = process.env['TOY_PLAYER_ENV']

私の質問は、リモートコンピュータでこれらの変数を設定する方法です。

答え1

すでによく受け入れられている答えを含む非常によく似た質問があります。シェルがSSHによって制御されているかどうかをどのように検出しますか?

bash変数の1つの長さがゼロでないことを確認して、bash変数の1つが設定されていることをSSH_CLIENT確認できます。SSH_TTY

if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
    # do your stuff here
fi

または、シェル親プロセスの名前が次のように指定されていることを確認できますsshd

if [ $(ps -o comm= -p $PPID) = 'sshd' ]; then
    # do your stuff here
fi

関連情報