码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • go如何读取或设置os的环境变量


    背景

    日常业务开发中,难免会遇到读取操作系统变量的场景, 如下代码片段列出了golang语言如何读取或者设置os环境变量的常用用法。仅供参考

    代码

    代码地址

    package main
    
    import (
    	"fmt"
    	"os"
    	"strings"
    )
    
    func main() {
        // 读取指定环境变量的值
    	fmt.Println("Shell:", os.Getenv("SHELL"))
    
    	getEnv := func(key string) {
    		val, ok := os.LookupEnv(key)
    		if !ok {
    			fmt.Printf("%s not set\n", key)
    		} else {
    			fmt.Printf("%s=%s\n", key, val)
    		}
    	}
    
    	getEnv("EDITOR")
    	getEnv("SHELL")
    
    	fmt.Println("before editor:", os.Getenv("EDITOR"))
    	// 设置环境变量
    	os.Setenv("EDITOR", "emacs")
    	fmt.Println("after setenv, editor:", os.Getenv("EDITOR"))
    
    	// os.Environ returns a copy of strings representing the environment, in the form "key=value".
    	// 获取全部环境变量
    	for _, e := range os.Environ() {
    		pair := strings.SplitN(e, "=", 2)
    		fmt.Printf("%s: %s\n", pair[0], pair[1])
    	}
    
    	// os.ExpandEnv is a helper function which replaces the $var inside a string into the value of the given variable.
    	//	References to undefined variables are replaced by the empty string
    	os.Setenv("EDITOR", "emacs")
        
    	fmt.Println(os.ExpandEnv("My editor is $EDITOR."))
    	fmt.Println(os.ExpandEnv("My shell is $SHELL."))
    
    	// github.com/joho/godotenv  loads environment variables from the .env file
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    执行结果示例

    不同机器上执行结果可能不同,此时是别人机器执行结果,示例

    Shell: /bin/zsh
    EDITOR not set
    SHELL=/bin/zsh
    before editor: 
    after setenv, editor: emacs
    ALACRITTY_WINDOW_ID: 0
    COLORTERM: truecolor
    COMMAND_MODE: unix2003
    ...  此处省略部分内容
    SHELL: /bin/zsh
    SHLVL: 1
    SSH_AUTH_SOCK: /private/tmp/com.apple.launchd.XATn15hl3j/Listeners
    TERM: xterm-256color
    TERM_PROGRAM: Jetbrains.Fleet
    TERM_PROGRAM_VERSION: 1.22.113
    TMPDIR: /var/folders/ls/8nvj13l13b59rpk8c1jw_tg00000gn/T/
    USER: ericyang
    WINDOWID: 0
    XPC_FLAGS: 0x0
    XPC_SERVICE_NAME: 0
    __CFBundleIdentifier: Fleet.app
    __CF_USER_TEXT_ENCODING: 0x1F5:0x19:0x34
    _: /usr/local/go/bin/go
    EDITOR: emacs
    My editor is emacs.
    My shell is /bin/zsh.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
  • 相关阅读:
    第十三届蓝桥杯C++C组省赛H题—— 重新排序(AC)
    04 Spring 注解实现IOC
    SpringBoot整合JWT
    大二Web课程设计——家乡主题网页设计(web前端网页制作课作业) 四川旅游网页设计制作
    Agisoft Metashape相机标定笔记
    03 当前机器的虚拟机[NAT网络]映射出 9200 到宿主机, 局域网的其他机器访问 宿主机+9200 访问不到 kafka 的服务
    【路径规划】基于DWA实现机器人动态避障附matlab代码
    QCC3071与QCC3072有什么区别?
    单机搭建Nacos集群
    【appium】App类型、页面元素|UiAutomator与appium|App元素定位
  • 原文地址:https://blog.csdn.net/russle/article/details/133184860
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号