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)
}

相关推荐

  1. linux学习】linux下添加环境变量方法

    2024-07-14 12:14:01       51 阅读
  2. 关于vue环境变量使用

    2024-07-14 12:14:01       13 阅读
  3. linux设置环境变量

    2024-07-14 12:14:01       55 阅读
  4. k8s,configMap与环境变量关系

    2024-07-14 12:14:01       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 12:14:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 12:14:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 12:14:01       58 阅读
  4. Python语言-面向对象

    2024-07-14 12:14:01       69 阅读

热门阅读

  1. Flask与Celery实现Python调度服务

    2024-07-14 12:14:01       22 阅读
  2. `speech_recognition` 是一个流行的库

    2024-07-14 12:14:01       21 阅读
  3. 致十年后的自己

    2024-07-14 12:14:01       14 阅读
  4. 25秋招面试算法题 (Go版本)

    2024-07-14 12:14:01       25 阅读
  5. yii2 AssetBundle使用

    2024-07-14 12:14:01       22 阅读
  6. 如何使用IPython的并行计算能力处理大数据

    2024-07-14 12:14:01       23 阅读
  7. 如何定义版本号--语义化版本

    2024-07-14 12:14:01       21 阅读
  8. IOS热门面试题(一)

    2024-07-14 12:14:01       15 阅读
  9. Set和Map的用法

    2024-07-14 12:14:01       25 阅读
  10. 一阶低通滤波(IIR)

    2024-07-14 12:14:01       21 阅读
  11. 12_Shell流程控制

    2024-07-14 12:14:01       27 阅读