我有一个 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