无法在 ~/.profile 中设置环境变量

无法在 ~/.profile 中设置环境变量

所有,我需要在我的程序中设置环境变量,~/.profile因为我正在运行一个不启动 bash shell 的程序(QtCreator)。

但我无论如何都无法让它工作。QtCreator 不会显示我在“系统环境”下定义的任何环境变量。

我怎样才能做到这一点?


编辑:好吧,实际上我的问题是为什么我source my_environment不能

我的环境:

 export SOME_PATH=blalalal

如果我添加export SOME_PATH=blalalal到我的~/.profile,它就会起作用。但我不能使用source ~/.profile

答案1

以下是故事内容:

~/.profile - 您还可以在此文件中放置环境变量分配,因为它会在启动过程桌面会话期间由 DisplayManager 自动执行,也会在从文本控制台登录时由登录 shell 自动执行。

来源

  1. 解决方法:导出中定义的变量.profile

            导出 VAR1=foo

  2. 解决方案:将变量放入 .bashrc 中,打开终端并从命令行启动 QtCreator。它应该有变量。不要忘记导出它们:

    export VAR1=foo
    
  3. 解决方案:创建一个用于启动程序的包装器,运行一个小脚本而不是直接运行程序:

    #!/bin/bash
    
    export VAR1=foo
    program
    

    或者

     #!/bin/bash
    
     VAR1=foo program
    
  4. 解决方案:编辑.desktop用于启动应用程序的文件,将执行行修改为

     VAR1=foo program
    

    代替

     program
    

    (尚未测试过,但应该可行)

  5. 解决方案:更改环境。您的评论是正确的,程序确实会获得环境,即使它们不从 读取它.profile。系统范围的环境位于/etc/environment,但您也可以按会话设置它,在您的主目录中名为 的文件中.pam_environment。请参阅这里了解更多信息。顺便说一句,此页面清楚地解释了所有不同文件的作用以及何时使用哪个文件。

    然而,我更喜欢解决方案 1-3,因为它们改变了程序仅限此内容,而非整个会话。

答案2

只需注销并重新登录系统即可.pam-environment读取文件并识别环境变量。

相关内容