Skip to content

install_hermes_memory_tencentdb.sh 以 root 执行时会 su - root 递归 #20

@kylezhang

Description

@kylezhang

安装 Hermes 集成时遇到一个 root 分支的小问题:如果直接用 root 用户执行 install_hermes_memory_tencentdb.sh,脚本会反复切换到 root,最后一直循环。

环境

  • Ubuntu 服务器
  • 当前用户:root
  • Hermes 已安装完成
  • 执行脚本:install_hermes_memory_tencentdb.sh

现象

执行脚本后反复输出:

[memory-tencentdb] Running as root, switching to root for installation...
[memory-tencentdb] Running as root, switching to root for installation...
[memory-tencentdb] Running as root, switching to root for installation...

只能手动 Ctrl+C 停掉。

原因

脚本里当前逻辑大概是:

USERNAME=$(whoami)

if [ "$(id -u)" -eq 0 ]; then
  su - $USERNAME -c "bash $TEMP_SCRIPT"
fi

当当前用户本来就是 root 时:

USERNAME=root
su - root

进入后仍然是 root,于是又走同一个分支,形成递归。

建议

root 分支可以区分两种情况:

  • 如果当前是 root,但目标用户不是 root,再 su - <target_user>
  • 如果当前就是 root 且目标用户也是 root,直接继续执行安装逻辑,不再 su - root

类似:

if [ "$(id -u)" -eq 0 ] && [ "$USERNAME" != "root" ]; then
  ...
fi

或者提供一个明确的目标用户参数,避免 whoami 在 root 场景下被当成切换目标。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions