使用 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 shell 退出。我使用 CTRL+C 退出,但它停止了节点服务器。

PS:我知道我可以远程登录它并工作。但我正在尝试学习使用命令行做事。

实现这一目标的最佳实践是什么?

聚苯硫醚:我不想检测 shell 是否由 SSH 控制。我想在启动 Node 应用程序之前导出一些变量。这些变量是环境变量,由我的应用程序中存在的 config.js 读取。

这是一个示例,我如何使用环境变量。

var env = process.env['TOY_PLAYER_ENV']

我的问题是如何在远程计算机上设置这些变量?

答案1

已经有一个非常相似的问题,并且有一个很好接受的答案:如何检测 shell 是否由 SSH 控制?

您可以通过检查 bash 变量之一的长度是否不为零来检查SSH_CLIENT它们SSH_TTY是否已设置:

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

或者,您可以检查 shell 父进程是否sshd按以下方式命名:

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

相关内容