我的编程空间,编程开发者的网络收藏夹
学习永远不晚

获取正确的环境变量

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

获取正确的环境变量

哈喽!今天心血来潮给大家带来了《获取正确的环境变量》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

我正在编写一个 go 实用程序,需要使用命令 which 来获取有关程序是否在 $path 中的信息,但我注意到,虽然我的程序在从终端启动时可以工作,但它不起作用如果双击打开。

我使用的代码非常简单:

wichJavaOutput, err := Command("which", "java").CombinedOutput()
if err != nil {
    return err.Error(), err
}

问题是这仅部分有效,如果 java 通过包管理器安装并且位于公共文件夹中,则可以轻松找到它,但 java 是手动安装并添加到 ~/.bashrc~ 中。 /profile 它不起作用。

我通过使用 os.getenv 获取 $path 进行了一对测试,显然...... 如果我通过终端启动程序, $path 也包含 ~/.bashrc~./profile 的部分,但是如果我通过双击启动它,它会找到 $path 的所有部分,除了那个部分在这两个文件中,考虑到它可能是加载 ~/.bashrc~./profile 的 shell,这有点有意义,所以我尝试执行 /bin/sh -c which java/bin/bash -c哪个 java 可以工作,但也不起作用,所以问题来了:

如何在 go 中获取环境变量并在终端中获得正确的环境变量?


解决方案


您看到的问题是因为通常当在 GUI 中双击程序来运行该程序时,PATH 环境变量会设置为默认值。但是,当您的程序在终端中运行时,它会从终端继承 PATH 值。

这里要做的事情是始终使用 PATH 并让用户在想要不同的行为时适当地配置其 GUI 会话。人们总是设置不同的 PATH 值,有时只是通过更改目录来设置,并且您无法知道用户希望它从用户的 shell 配置中猜测什么。

此外,即使您想调用用户的 shell,它也不总是 bash(我使用 zsh),也不总是符合 POSIX 的 shell(例如,tcshfish 等),所以有没有一组命令可以调用 SHELL 中的程序,并且始终会产生正确的结果。

如果您的程序确实需要从终端运行,那么您应该发送一个 .desktop 文件,指示它应该从终端运行,然后就会生成一个文件。否则,要么指定一个命令行选项,让用户覆盖搜索,要么像其他程序一样使用 PATH

今天关于《获取正确的环境变量》的内容介绍就到此结束,如果有什么疑问或者建议,可以在编程网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

获取正确的环境变量

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

获取正确的环境变量

哈喽!今天心血来潮给大家带来了《获取正确的环境变量》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!问题内容我正在编写一个 go 实用程
获取正确的环境变量
2024-04-05

python 获取环境变量

python 获取环境变量参考 https://docs.python.org/2/library/os.html使用os.environ获取环境变量字典import osenv_dist = os.environ # environ是在o
2023-01-31

配置PyCharm环境变量的正确方法

在PyCharm中正确配置环境变量对于开发人员来说是非常重要的,因为环境变量可以帮助我们在项目中使用特定的配置信息、密钥、路径等。在本文中,我将详细介绍如何在PyCharm中正确配置环境变量,并提供具体的代码示例。首先,打开PyCharm
配置PyCharm环境变量的正确方法
2024-02-24

Shell eval怎么用变量获取环境变量

这篇文章主要讲解了“Shell eval怎么用变量获取环境变量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell eval怎么用变量获取环境变量”吧!场景系统中存在环境变量 USER=
2023-06-09

VB.NET中怎么获取环境变量

本篇文章为大家展示了VB.NET中怎么获取环境变量,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Windows系统将很多重要的信息(比如计算机名和用户名)存储在环境变量中。访问这些变量来获取这些信息
2023-06-17

怎样用Python获取环境变量

环境变量的获取通过os.environ模块。import osprint(os.environ["path"])或者你可以以下命令看到所有环境变量os.environ有时您可能需要查看完整列表# 当key不存在时,将会报错KeyError,
2023-01-31

Shell eval通过变量获取环境变量的方法实现

场景系统中存在环境变量 USER=iceber脚本中存在一个变量 env_name=USER需要通过变量 env_name 获取到环境变量 USER rvLjqm的值错误示例$ # 环境中已存在环境变量 USER $ ervLjqmnv_n
2022-06-04

java获取和设置系统变量问题(环境变量)

这篇文章主要介绍了java获取和设置系统变量问题(环境变量),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-01

Springboot yml怎么获取系统环境变量的值

这篇文章主要介绍了Springboot yml怎么获取系统环境变量的值的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Springboot yml怎么获取系统环境变量的值文章都会有所收获,下面我们一起来看看吧。y
2023-06-29

python--读取环境变量

转载请注明出处:python–读取环境变量python中经常会通过环境变量来进行参数传递和环境配置。本章记录读取环境变量的方案首先设置环境变量$ export ENV_PORT=3333$ echo $ENV_PORT3333os直接读取使
2023-01-31

PHP如何获取服务器环境变量信息

在PHP中,可以使用$_SERVER全局变量来获取服务器环境变量信息。以下是一些常用的服务器环境变量信息的示例:获取服务器的IP地址:$server_ip = $_SERVER['SERVER_ADDR'];echo
PHP如何获取服务器环境变量信息
2024-05-06

如何在vite里获取env环境变量浅析

开发中经常会使用环境变量,Vite相比于Webpack也有一定的变化,下面这篇文章主要给大家介绍了关于如何在vite里获取env环境变量的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2022-11-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录