我想将其添加到我的 PATH 中,以便我的计算机 (Ubuntu) 知道在哪里解释“R”命令(用于启动 R)。我需要这个,以便终端或 RStudio 可以找到我安装 R 的位置。
我执行了以下所有操作,但均未将命令 R 与我的 R 安装目录永久关联~/R/bin
。
export PATH=$PATH:$HOME/R/bin
<- 这在它生效的终端会话中有效,但如果我打开第二个终端,PATH 就会回到我向其中添加 $HOME/R/bin 之前的状态
根据各个网站的建议,当我将此行添加到两个不同的文件时,出现了相同的“仅限本地终端”行为:
sudo vim ~/.profile
export PATH=$PATH:$HOME/R/bin
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