Shell 当我以root用户身份登录Ubuntu 16.04时,为什么Golang环境变量一直在消失?

Shell 当我以root用户身份登录Ubuntu 16.04时,为什么Golang环境变量一直在消失?,shell,environment-variables,environment,Shell,Environment Variables,Environment,当我以root用户身份登录时,为什么golang环境变量不断消失? 每次我想使用source ~/.profile时,我都必须运行它,而对于一个简单的用户来说,情况并非如此。这有什么问题 安装步骤 去环境 可能您可以尝试设置此链接中提到的环境变量-环境变量,如名称所示,配置一个环境,每个用户都有一个不同的环境。使用-s运行的shel在启动时根本不会读取/etc/profile。您的普通用户和root用户是不同的用户,因此他们的环境设置不同。这回答了你的问题吗?为什么用户环境不会只消失在根环境中?

当我以root用户身份登录时,为什么golang环境变量不断消失? 每次我想使用source ~/.profile时,我都必须运行它,而对于一个简单的用户来说,情况并非如此。这有什么问题

安装步骤

去环境


可能您可以尝试设置此链接中提到的环境变量-

环境变量,如名称所示,配置一个环境,每个用户都有一个不同的环境。使用-s运行的shel在启动时根本不会读取/etc/profile。您的普通用户和root用户是不同的用户,因此他们的环境设置不同。这回答了你的问题吗?为什么用户环境不会只消失在根环境中?我以同样的方式为两个用户安装了golang,并设置了全局environments@Baziwe:从:中,-E preserve environment选项向安全策略指示用户希望保留其现有环境变量。如果指定了-E选项,并且用户没有保留环境的权限,则安全策略可能会返回错误。我与一个用户一起尝试了此操作,它对用户有效,但对root无效,然后我尝试使用与root相同的过程,成功了,但当我注销并再次登录时,它停止。有点奇怪尝试用sudo-esu设置变量。要创建真正的系统范围的持久变量,应该在/etc/environment中设置它们
k4@k4sec:~$ sudo apt update
k4@k4sec:~$ sudo wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz
k4@k4sec:~$ sudo tar -C /usr/local -xzf go1.14.2.linux-amd64.tar.gz
k4@k4sec:~$ sudo echo 'PATH="$PATH:/usr/local/go/bin"' >> ~/.profile    
k4@k4sec:~$ sudo echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
k4@k4sec:~$ source ~/.profile
k4@k4sec:~$ go version
go version go1.14.4 linux/amd64
k4@k4sec:~$ sudo -s
root@k4sec:~# go version
The program 'go' is currently not installed. You can install it by typing:
apt install golang-go
root@k4sec:~# source ~/.profile
root@k4sec:~# go version
The program 'go' is currently not installed. You can install it by typing:
apt install golang-go
root@k4sec:~# echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
root@k4sec:~# source ~/.profile
root@k4sec:~# go version
go version go1.14.4 linux/amd64
root@k4sec:~# exit
exit
k4@k4sec:~$ go version
go version go1.14.4 linux/amd64
k4@k4sec:~$ sudo -s
root@k4sec:~# go version
The program 'go' is currently not installed. You can install it by typing:
apt install golang-go
root@k4sec:~#
k4@k4sec:~$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/k4/.cache/go-build"
GOENV="/home/k4/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/k4/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build611508695=/tmp/go-build -gno-record-gcc-switches"