作为新用户,如何使用 golang?

作为新用户,如何使用 golang?

我正在编写一个 shell 脚本,它将一些二进制文件安装为 systemd 服务。为了保持整洁,该服务在新用户下运行。我想将所有二进制文件保存在该新用户的主目录中。问题是我需要使用 go 构建二进制文件。

似乎我新创建的用户没有找到go,我想要一些关于如何告诉它在哪里找到它的指点。

下面是我用于执行该任务的 shell 脚本:

#!/bin/bash
sudo adduser --disabled-password --home /home/erigon --shell /bin/bash --gecos "" erigon
sudo -u erigon git clone --branch stable --single-branch https://github.com/ledgerwatch/erigon.git /home/erigon/erigon
cd /home/erigon/erigon
sudo make erigon

失败了/bin/sh: 1: go: not found

我确实已经go为普通用户安装了:

$ go version
go version go1.18.2 linux/amd64

但实际上新用户并没有看到它:

$ sudo -u erigon go version
sudo: go: command not found

答案1

很可能make是在路径中没有的环境中运行go。这可能与您运行脚本的方式有关,而不是用户帐户本身。此类问题在系统级别运行的脚本中很常见,例如来自 cron 或 systemd 的脚本,其中路径未设置或设置为最低默认值。

如果这纯粹是一个路径问题,最简单的解决方案是在脚本中明确将路径设置为合适的路径。

对于您的“普通”用户来说,Go 并未“安装”。只是当您使用 sudo 更改用户时,您的路径设置不正确。以下是一些需要检查的事项:

  • 在其工作的用户中,尝试echo $PATH查看正确的路径是什么。
  • 使用 sudo 更改用户时,请使用sudo -Hsu erigon;这样可以正确设置主目录,然后为您提供 shell。再次使用echo $PATH并检查路径是否正确。如果不正确,请修复它,复制先前的正确路径。然后一切就应该正常了。

相关内容