背景: 我正在尝试将一个目录添加到我的路径中,以便它始终位于我的Linux路径中。我已经尝试过:
export PATH=$PATH:/path/to/dir
这样做是有效的,但每次退出终端并启动新的终端实例时,此路径都会丢失,并且我需要再次运行导出命令。
如何使其永久设置?
经过大量的研究,我找到了一个简单的解决方案(我正在使用 Elementary OS ),受到Flutter-Linux-Ubuntu上逐步安装的启发。
Run the following command to open the .bashrc file in edit mode. (You may also use vi or any other editor).
~$ sudo nano ~/.bashrc
Add the following line at the end of the file and save.
export PATH="[FLUTTER_SDK_PATH]/flutter/bin:$PATH"
For example:
export PATH="/home/rageshl/dev/flutter/bin:$PATH"
我相信这是在Ubuntu发行版中设置Flutter路径的永久解决方案。
nano ~/.bashrc
就可以了。 - reubano可以直接使用以下命令进行添加:
echo 'export PATH=$PATH:/new/directory' >> ~/.zshrc
source ~/.zshrc
添加一个永久路径的方法是:
我使用的方法如下:
cd /etc/profile.d
touch custom.sh
vi custom.sh
export PATH=$PATH:/path according to your setting/
重新启动您的计算机,然后就可以了;路径将会永久存在。
sudo
编辑系统文件。在这些文件中,不能使用仅限于Bash的语法,因为它们与非Bash shell共享。你可能只需移除export
,因为你现有的配置很可能已经负责导出此变量。如果没有,请在单独的一行上添加export PATH
。 - tripleee/etc/profile.d
是特定于平台的;如果该目录不存在,请检查/etc/profile
并查看是否有选项可以引用(也称为.
)未由您的操作系统管理的文件,这样您就无需直接编辑此系统文件。 - tripleee永久添加到PATH环境变量
全局:
echo "export PATH=$PATH:/new/path/variable" >> /etc/profile
本地(仅限当前用户):
echo "export PATH=$PATH:/new/path/variable" >> ~/.profile
对于全局,请重新启动。对于局部,请重新登录。
示例:
之前:
$ cat /etc/profile
#!/bin/sh
export PATH=/usr/bin:/usr/sbin:/bin:/sbin
之后:
$ cat /etc/profile
#!/bin/sh
export PATH=/usr/bin:/usr/sbin:/bin:/sbin
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable
$ cat /etc/profile
#!/bin/sh
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable
echo 'PATH=$PATH:/new/path/variable' >> /etc/profile
在这里不应该使用双引号!echo 'export PATH=$PATH:/new/path/variable'...顺便说一下,export关键字很可能是无用的,因为PATH变量很可能已经被标记为导出的。 - gniourf_gniourf
echo 'export PATH=$PATH:/new/path/variable'
... 顺便说一下,export
关键字很可能是无用的,因为PATH
变量很可能已经被标记为导出。 - gniourf_gniourf~/.bashrc
将/usr/local
附加到它。现在,如果您打算使用/etc/bash.bashrc
将/opt/bin
附加到同一变量;$PATH将转换为相同的静态字符串,结果$PATH将被替换而不是附加...这将成为系统对一个文件优先于另一个文件的偏好问题。 - trve.fahad[name_of_script].sh
添加到/etc/profile.d
文件夹中,方法是添加以下代码行:export PATH=$PATH:/dir
/etc/profile.d
文件夹中的脚本都会在登录时被/etc/profile
自动执行。我的回答是关于在Ubuntu Linux(amd64)上设置Go环境。我也遇到了同样的问题,即设置环境变量路径(GOPATH
和GOBIN
),但在终端退出后丢失,并需要每次使用source <file_name>
重新构建。
错误在于将路径(GOPATH
和GOBIN
)放在~/.bash_profile
文件中。浪费了几个好小时后,我发现解决方案是以以下方式将GOPATH
和GOBIN
放入~/.bash_rc
文件中:
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH:$GOBIN
在这样做的过程中,Go安装工作正常,没有路径损失。
这个问题可以与非登录shell的设置相关,比如你的Ubuntu终端或者我们运行Go代码的GNOME终端,都会从~./bash_rc
文件获取设置,而登录shell的设置则来自于~/.bash_profile
文件。如果~/.bash_profile
文件无法访问,则从~/.profile
文件获取设置。
Zues77的想法很正确。OP并没有说“我该如何通过黑客方式解决这个问题?”。OP想知道如何永久地追加到$ PATH:
sudo nano /etc/profile
这是设置所有内容的地方,也是更改所有需要$PATH的最佳地方。
/usr/local/bin
目录下,该目录应已在你的PATH路径中。这将使该二进制文件像你可能已经访问到的其他二进制文件一样可执行。您添加export命令的文件取决于您是否处于登录模式或非登录模式。
如果您处于登录模式,则要查找的文件为/etc/bash或/etc/bash.bashrc之一。
如果您处于非登录模式,则要查找的文件为/.profile,或者在目录/.profiles.d中的文件。
上述文件是系统变量所在的位置。
.profile
” 实际上在根目录下吗?你是指 ~/.profile
吗?.profiles.d
也是一样的情况。 - Peter Mortensen/etc/profile.d
中? - Peter Mortensenprofile.d
,不是 profiles.d
吗? - Peter Mortensen
bashrc
可以正常工作,无需不断地执行source ~/.profile
以使终端从环境变量中读取。 - Jose Mhlanga