使用 /etc/environment 设置系统范围的环境变量

使用 /etc/environment 设置系统范围的环境变量

我想将其添加到我的 PATH 中,以便我的计算机 (Ubuntu) 知道在哪里解释“R”命令(用于启动 R)。我需要这个,以便终端或 RStudio 可以找到我安装 R 的位置。

我执行了以下所有操作,但均未将命令 R 与我的 R 安装目录永久关联~/R/bin

  1. export PATH=$PATH:$HOME/R/bin <- 这在它生效的终端会话中有效,但如果我打开第二个终端,PATH 就会回到我向其中添加 $HOME/R/bin 之前的状态

根据各个网站的建议,当我将此行添加到两个不同的文件时,出现了相同的“仅限本地终端”行为:

  1. sudo vim ~/.profile

    export PATH=$PATH:$HOME/R/bin
    
  2. sudo vim /etc/environment

    export PATH=$PATH:$HOME/R/bin
    

为什么 R 在新的终端会话中无法被识别?

答案1

/etc/environment文件不是脚本文件:据我所知,您无法export在那里使用,并且它不支持类型的变量扩展$HOME,只支持简单的variable=value对。因此,要使用该文件,您只需将路径附加到现有定义,例如

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/username/R/bin"

然而,设置全系统 PATH在我看来,以这种方式包含用户的主目录是一种值得怀疑的做法:正常的方式是使用用户自己的 shell 启动文件之一:~/.profile通常是推荐的环境变量,但它的缺点是只能由登录 shell 调用,因此为了使其生效,您需要注销并重新登录 - 或者至少启动一个新的登录 shell,例如使用

    su - username

或者

    su -l username

注意sudo不应用于编辑这些个人文件,因为这很可能会使其归 拥有root,这可能会在日后引起进一步的问题。如果您已经使用,sudo vim则可能需要使用sudo chown来恢复其正确的所有权,例如

sudo chown username:username ~/.profile

然后,您可以使用首选编辑器添加所需的路径组件,例如

vim ~/.profile

您甚至可以考虑复制该文件中的现有范例,~/bin即将其添加为

# set PATH so it includes user's private R bin if it exists
if [ -d "$HOME/R/bin" ] ; then
    PATH="$HOME/R/bin:$PATH"
fi

相关内容