linux中关于环境变量的常用的设置方法

一. linux中设置环境变量的方式

1.使用/etc/environment, 是一个全局的环境变量设置文件,它会影响到所有用户和所有进程。当你需要设置一个全局的环境变量时,应该使用这个文件。这个文件的格式是 KEY=value,每行一个环境变量。

2. 使用/etc/profile,这是一个 shell 的配置文件,它只会影响到交互式登录 shell。当你需要设置一个只对交互式 shell 有效的环境变量时,应该使用这个文件。这个文件可以包含 shell 命令,例如设置环境变量、定义别名等。

3. 使用~/.bashrc,与/etc/profile类似,它只影响交互式登录shell。与/etc/profile的区别是~/.bashrc只对当前用户的交互shell 生效。

二. 环境变量设置的测试

1. 使用/etc/profile设置环境变量

# 设置环境变量
root@ubuntu16.04:~# vim /etc/profile

export testkey=testvalue


# 登录服务器
ssh ubuntu16.04

# 显示环境变量
root@ubuntu16.04::~# env |grep test
testkey=testvalue

# 在当前shell中,启动一个进程也能读取/etc/profile设置的环境变量,因为子进程共享父进程的环境信息
# 写一个读取环境变量的脚本
root@ubuntu16.04:~# vim getenv.sh
#!/bin/bash
env

root@ubuntu16.04:~#bash -x getenv.sh
#!/bin/bash
env

root@ubuntu16.04:~# bash -x getenv.sh  |grep test
+ env
testkey=testvalue



# 用go语言启动一个进程,同样能读取/etc/profile设置的环境变量
root@ubuntu16.04:~# vim getEnvBygo.go
package main
import(
  "fmt"
  "os"
)

func main(){
  path,ok := os.LookupEnv("testkey")
  if !ok {
     fmt.Println("read env error.")
     return
  }
  fmt.Println("testkey="+path)
}

root@ubuntu16.04:~# go run getEnvBygo.go
testkey=testvalue

注意: ssh xxx '<命令>'  ,远程执行命令方式,由于是非shell交互方式,所以无法读取/etc/profile中设置的环境变量

2. 使用/etc/environment

由于/etc/environment设置的环境变量是全局的环境变量,即使使用ssh xxx '<命令>'非交互方式启动进程也能读取到/etc/environment设置的环境变量

vim /etc/environment

# 添加内容
testkey2='testvalue2'

能可以读取环境变量:

修改下读取环境的go脚本

root@ubuntu16.04:~# cat getEnvBygo.go

package main
import(
  "fmt"
  "os"
)

func main(){
  path,ok := os.LookupEnv("testkey")
  if !ok {
     fmt.Println("testkey read env error.")
  }
  fmt.Println("testkey="+path)

  path,ok = os.LookupEnv("testkey2")
  if !ok {
     fmt.Println("testkey2 read env error.")
  }
  fmt.Println("testkey2="+path)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值