我有以下脚本:
#!/bin/bash
su newuser
node index.js
此脚本是 Docker 容器的入口点。
当我运行容器时,我看到脚本被执行并切换到 newuser。但是,index.js 不会被调用。但是,一旦我输入“exit”退出 newuser,index.js 就会开始运行。
有人可以解释一下这里的问题是什么吗?
最佳答案
su newuser
将创建一个新的 shell。基本上,该命令启动一个需要一些时间才能退出的进程。只有当它退出时,原始 bash 脚本中的下一个命令才会执行。
如果您想以新用户身份运行 Node ,请使用以下命令:
su newuser -c "node index.js"
您可能还想包含 Node 的完整路径,因为以这种方式启动脚本通常不会显示您可能期望的完整环境(与运行完整 shell 相比,PATH 可能不完整):
su newuser -c "/path/to/node index.js"
关于node.js - 在脚本中切换用户后运行node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51426720/