are*_*gme 5 command-line bash environment-variables r
我想添加到我的 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
Run Code Online (Sandbox Code Playgroud)sudo vim /etc/environment
export PATH=$PATH:$HOME/R/bin
Run Code Online (Sandbox Code Playgroud)为什么在新的终端会话中不能识别 R?
该/etc/environment文件不是脚本文件:AFAIK 你不能export在那里使用,它不支持类型的变量扩展$HOME,只是简单的variable=value对。因此,要使用该文件,您只需将路径附加到现有定义中,例如
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/username/R/bin"
Run Code Online (Sandbox Code Playgroud)
但是,以这种方式将系统范围 设置PATH为包含用户的主目录是一种有问题的做法恕我直言:正常的方法是使用用户自己的 shell 启动文件之一:~/.profile通常建议用于环境变量,但是它有只能由登录外壳调用的缺点,因此为了使其生效,您需要注销并重新登录 - 或者至少,启动一个新的登录外壳,例如使用
su - username
Run Code Online (Sandbox Code Playgroud)
或者
su -l username
Run Code Online (Sandbox Code Playgroud)
请注意,sudo不应使用 来编辑这些个人文件,因为它可能会使它们归 拥有root,这可能会导致进一步的问题。如果您已经使用过,sudo vim您可能需要使用sudo chown来恢复其正确的所有权,例如
sudo chown username:username ~/.profile
Run Code Online (Sandbox Code Playgroud)
然后您可以使用您喜欢的编辑器添加所需的路径组件,例如
vim ~/.profile
Run Code Online (Sandbox Code Playgroud)
您甚至可以考虑复制该~/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
Run Code Online (Sandbox Code Playgroud)