我正在尝试向路径中添加一个目录,以便它始终位于我的Linux路径中。我试过了:
1
| export PATH=$PATH:/path/to/dir |
但是,每次我退出终端并启动一个新的终端实例时,这个路径都会丢失,我需要再次运行export命令。
我该怎么做才能永久设置?
您需要将其添加到您的~/.profile或~/.bashrc文件中。
1
| export PATH="$PATH:/path/to/dir" |
根据所做的操作,您可能还需要对二进制文件进行符号链接:
1 2
| cd /usr/bin
sudo ln -s /path/to/binary binary-name |
请注意,这不会自动更新会话其余部分的路径。为此,您应该运行:
1 2 3
| source ~/.profile
or
source ~/.bashrc |
- 几个问题。1)$PATH和/usr/bin之间不应该有结肠。2)/usr/bin是否还存在。3)你不应该使用/usr/local/bin吗?
- 请注意:在bash路径的末尾留下一个尾随冒号通常被认为是一个安全漏洞,因为如果bash找不到它要查找的可执行文件,它会使bash在当前目录中查找。如果用户发现这篇文章寻找更多的信息,应该通知他们。
- @Adamrobertson它是不安全的-考虑一下当你打开tarball时的场景,然后cd到你打开它的目录,然后运行ls,然后意识到tarball有一个称为ls的恶意程序。
- 对我来说是。巴什的资料,不是。资料。似乎每个人都不一样。
- @Donquixote请参阅此处了解这些文件之间的区别stackoverflow.com/questions/415403/…
- @在这种情况下,系统的ls优先,但我明白你的意思…
- @阿达姆洛伯森还有其他更讨厌的版本。例如,创建一个名为sl的恶意脚本,等待有人错误地输入ls。
- 仅供参考:在Ubuntu和Debian中,已经在~/.profile中添加了~/bin目录。
- 我认为我显著提高了这个答案的质量,并解决了其他用户提出的一些问题。每个路径导出,或者每个调整路径的命令,都应该确保用冒号分隔现有路径。不应使用前导或尾随冒号,并且当前目录不应位于路径中。
- 只是为了澄清。此处显示的路径设置正常,不危险地包括当前目录…我花了一段时间才从这里的其他评论中找到答案,但是您可以从编辑历史中看到坏版本是什么样子的。
- 如果目录名中有空格,它不应该像export PATH="$PATH:/path/to/dir"那样有引号吗?我同意,在PATH的情况下,这种可能性有点小。但无论如何,把"放在所有扩展中都是一个好习惯。
- @aaronmcdaid如果您的目录中有空格,那么您可能正在对它们进行转义。这是一个偏好问题,真的。
- 很抱歉让我这么做,但这对我在拱门上不起作用。相反,我在.bashrc中添加了该行。
- @亚历克斯,这对瑞尔很有用,我确定。也许您还可以根据不同用户的访问权限更改/etc/bashrc文件中的脚本。只要每次shell打开时设置path var的脚本得到正确的path var。只要确保在导出目录中不会运行任何命令,无意中,导出就会安全。
- 在我的Debian 8系统中,我只需将路径放在~/.profile文件中,然后运行source .profile即可使更改立即对当前终端会话生效。这是永久设置的,在注销/重新启动后可用。
- 编辑完不需要重新启动的~/.profile后,运行source ~/.profile。
- Android上的Path怎么样?看我的问题
- 这是一个临时解决方案,因为系统启动时所有更改都将丢失。正确的解决方案是在/etc/environment文件中编辑路径变量。
- @AOG不正确,这是在shell会话开始时执行的,因此在登录时会一直存在。
- @alhelal您可能需要重新启动终端会话或使用source ~/.bashrc来提取新的更改。pdflatex还需要有可执行标志。
- 谢谢您。实际上,我的.bashrc包含一些语法错误,这些错误导致了问题。
- 在更新的Ubuntu版本(16.04/18.04)中,我使用.profile扩展$path变量,因为当添加到.bashrc中时,这些条目将在新的bash shell中重复。
- 扩展@erewok最受欢迎的评论(就像我需要的那样)。尾随冒号(即冒号作为最后一个字符)被视为零长度的文件夹名,类似于两个连续冒号对的名称。并且约定将所有零长度的文件夹名视为等同于当前目录。
- 在cent os7上,我似乎用.bash_profile而不是.profile
- 只是为了大家的信息,我刚刚意识到这可以作为漏洞利用-exercises.com/nebula/level01
在Ubuntu中,编辑/etc/environment。它的唯一目的是存储环境变量。最初$path变量是在这里定义的。这是我的/etc/environment文件中的粘贴:
1
| PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" |
所以您可以打开这个文件作为根目录,并添加您想要的任何内容。
对于即时结果,运行(作为普通用户和根用户尝试):
1
| source /etc/environment && export PATH |
更新:
如果您使用zsh(a.k.a z shell),请在/etc/zsh/zshenv中的注释后添加这一行:
我在Ubuntu 15.10上遇到了这个小怪癖,但是如果你的zsh没有找到正确的路径,这就是为什么
- 并非所有系统都有/etc/环境
- @用户3439968虽然你可能是对的,但我从来没有遇到过没有它的用户:D然后我又一次只和我喜欢使用的操作系统搞混了。
- 我的Ubuntu和Debian有。我的freebsd和openwrt没有。我使用/etc/profile
- @用户3439968,感谢您指出。适当注意
- fwiw $PATH也在arch linux中的/etc/profile中定义。
- 有趣的是,我的Ubuntu14.04也没有这个文件,因为它使用了~/.bashrc。另一方面,从我的角度来看,没有/etc/environment是有意义的,因为我没有为"每个人"设置的单一变量……而且通常最好还是将核心系统配置与单个用户配置分开。;)
- @电子寿司我真的很震惊。我自己在Ubuntu 14.04.1上。我可以向你保证文件是内置的。
- 在阳光下尝试每一个建议,但/等/环境,让它们都不起作用后,我终于偶然发现了这一点。我也在Ubuntu14.04上,这是唯一一个在重新启动后实际更改路径变量的用户。
- 重新启动后,系统才意识到我添加了这一行!未被立即识别
- /etc/environment用于系统范围的环境变量。这是唯一改变它的原因。如果在编辑此文件时出错,可能会得到一个空的路径变量(我不希望在任何人身上出现)。向影响整个系统的路径变量添加路径的一个好方法是使用/etc/profile.d目录(这个链接应该是一个有用的链接)。
- @是的,我知道修改/etc/environment所带来的危险。但是,如果您使用像gedit这样的文件,那么在默认情况下,您应该有一个备份文件。更不用说,在任何系统范围的文件中,您都可以最终覆盖空白变量的路径。我的观点是,如果你愿意修改路径,你应该已经知道这样做的危险,修改/etc/environment并不比说/etc/profile之类的话更危险。
- 用户应在更新环境文件后重新启动电脑。
- zsh的调整对我起了作用
- 对于使用~/.bashrc的许多人来说,您可以使用source~/.bashrc以同样的方式轻松加载(例如,如果您更改了$path变量,但不想重新启动)。
- debian有/etc/environment,但是设置路径没有效果--etc/profile和/etc/login.def会重新设置它们。在Debian 9.5上测试
there are to多方式做它。解决方案depends on the the actual的目的。P></
变量的值是usually stored in the list of前或者在assignments that is壳脚本Run at the start of the系统或用户会话。在家你必须使用脚本of the壳壳在特异性表。P></系统网
/etc/environmentlist of assignments独特。完美的系统目录样增宽为/usr/local/something/binto PATHdefining JAVA_HOME或变量。
/etc/xprofile壳脚本启动X window系统executed当session。This is that run for every X window系统为用户日志。它是好的选择PATHentries that are for valid for every /usr/local/something/bin用户类。the other is included文件使用POSIX shell脚本知道,not the of user表表你的壳。
/etc/profile和/etc/profile.d/*外壳脚本。This is a good for壳-唯一的选择系统。这些文件是只读模式shells。
/etc/.rc。shell脚本。这是因为它是单壳的可怜的选择特异性。
用户会话
~/.pam_environment。assignments list of独特。负载模式PAM的每用户session at the start of irrelevant if it is an X window系统的session或壳。You cannot或参考其他变量包括HOMEPATH知道它有有限公司使用。
~/.xprofileshell脚本。executed when the user is this into X window系统日志系统。the visible to every变量x是定义在应用程序。完美的选择PATHwith values for such as ~/bin伸展或~/go/bindefining用户或NPM_HOMEGOPATH或特异性。the other is included文件使用POSIX shell脚本知道,not the of user表表你的壳。你的图形文本编辑器或IDE模式将开始看到那些快捷键的值。
~/.profileshell脚本。EN will be visible only for项目开始前emulator从终端终端。它是唯一的好选择for壳系统。
~/.rc。shell脚本。这是因为它是单壳的可怜的选择特异性。
特异性的文件分发
- 谢谢你的详细回答,这应该更高一点。也许应该把.bash_profile也加入名单?
- @Jamesko那是4号
- 我认为最好的答案是建议使用/etc/environment。但是我可以在不注销和登录的情况下刷新它吗?有时我不使用bash或sh,所以source /etc/environment不起作用。
- 很好,我认为是最完整的答案。应该更高。
- 我搜索这个主题的原因实际上是Go。很高兴看到我不是唯一一个意识到这一点的人。巴什克不是正确的地方。;)
将export声明放入~/.bashrc中。my.bashrc包含以下内容:
1
| export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH |
- 需要重新启动吗?
- 我把这个放在.profile里的时候工作过,没有找到.bashrc的。
- 它可能取决于确切的系统;我不确定是什么条件决定执行哪个文件。很高兴问题解决了。
- @单击"向上投票",您需要执行source ~/.bashrc以重新加载.bashrc配置。那就行了
- 如何使用Ubuntu14.04LTS。我对Linux很陌生。
- 只有当PATH尚未标记为环境变量时,才需要export关键字,而环境变量几乎是无条件的。简单地说,PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH也会有同样的效果。
- @towid在类似nano的文本编辑器中打开文件(~/.bashrc),然后在文件的末尾键入该行。一旦打开一个新的bash实例,就会修改路径。
- 这在CentOS系统上对我很有用。我相信不同发行版的版本是不同的。
你可以用两种方式永久设置$PATH。
为特定用户设置路径:您可能需要在用户的主目录中的.bash_profile中进行输入。
例如,在我的例子中,我将在Tomcat用户配置文件中设置Java路径
1
| [tomcat]$ echo"export PATH=$PATH:/path/to/dir">> /home/tomcat/.bash_profile |
要为所有系统用户设置公用路径,您可能需要如下设置路径:
1
| [root~]# echo"export PATH=$PATH:/path/to/dir">> /etc/profile |
- 文件名是/etc/profiles和s在您的发行版上吗?我的没有s。我想你有打字错误。
- 您可能想退出正在写入配置文件的$例如echo"export path=$path:/path/to/dir">>/etc/profile,这样,当脚本运行时,您实际上会附加到变量,而不是根据执行此初始命令时的值将其设置为文本值。
你可以使用CentOS局域网在线用户:RHEL or forP></
1
| echo $"export PATH=\$PATH:$(pwd)">> ~/.bash_profile |
本文件的目录(或当前目录,你可以使用其他路径)to the,but take effect这让永at the next用户登录。P></
如果你不想给我重新登录,可以使用:P></
# User specific environment and startup programsthis is that reload the present在.bash_profileCommentP></
You can also one of these permanently集,编辑文件:P></
(在/etc/profilefor users)P></
~/.bash_profile(for CURRENT USERP></
~/.bash_login(for CURRENT USERP></
~/.profile(for CURRENT USERP></
You can also to set a使用/etc/environment永恩路径环境变量,but does not支持变量展开。P></
extracted from http:/ / / / / linux-anadir-ruta-al-path.html www.sysadmit.com 2016年06P></
我认为最优雅的方式是:
1.将此添加到~/.bashrc文件中运行此命令
gedit ~/.bashrc
在里面添加你的路径
export PATH=$PATH:/opt/node/bin
2.来源~/.bashrc
(Ubuntu)
您可以将该行添加到控制台配置文件(例如bashrc)或.profile中。
- 我在EDOCX1[0]中没有这些文件
- @点击投票:你用什么外壳?(以点开头的文件是隐藏的,您需要像ls -a这样的东西来查看它们。)
- 我再看一眼就看到里面有埃多克斯。现在工作了,蒂。
- 如果您没有这些文件(bashrc或profile),您可以手动创建它们,它们将自动被使用。
这个问题在昨天的stumbled when to add a方式找我自己的scripts to the folder containing路径和我自己,我surprised to find out文件(在线~/.profileLinux造币厂:18.1)已包含thisP></
1 2 3 4
| # set PATH so it includes user's private bin if it exists
if [ -d"$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi |
在我thus,the folder to do是创建~/binscripts把我在那里。P></
zues77 has the right的想法。不说"how the OP能破解这一路。"想知道OP append to how to permanently美元路径:P></
this is where is for Mind集恩和恩change is the Best Place to for所有的路径needing美元P></
我的回答是关于在Ubuntu linux/amd64上设置go-lang的问题,我也遇到过同样的问题:设置环境变量路径(GOPATH和GOBIN,在终端出口丢失,每次使用source 进行重建,错误的是把路径(GOPATH和GOBIN放在~/.bash_profile中。文件夹。在浪费了几个小时之后,我发现解决办法是把GOPATH和GOBIN按如下方式放入~/.bash_rc文件:
1 2 3
| export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH:$GOBIN |
这样一来,Go安装工作正常,没有路径损失。
编辑1:与此问题相关的原因是,运行go代码的Ubuntu终端或GNOME终端等非登录shell的设置取自~./bash_rc文件,登录shell的设置取自~/.bash_profile文件,如果无法访问~/.bash_profile文件,则取自~/.profile文件。
添加export命令的文件取决于您是处于登录模式还是非登录模式。
如果您处于登录模式,您要查找的文件是/etc/bash或/etc/bash.bashrc。
如果您处于非登录模式,则需要查找文件/.profile或目录/.profiles.d中的文件。
上面提到的文件,如果系统变量在哪里。
永久添加路径变量
全球的:
1
| echo"export PATH=$PATH:/new/path/variable">> /etc/profile |
本地(仅限用户):
1
| echo"export PATH=$PATH:/new/path/variable">> ~/.profile |
用于全局重新启动。本地重新登录。
例子
之前:
1 2 3 4 5
| $ cat /etc/profile
#!/bin/sh
export PATH=/usr/bin:/usr/sbin:/bin:/sbin |
后:
1 2 3 4 5 6
| $ cat /etc/profile
#!/bin/sh
export PATH=/usr/bin:/usr/sbin:/bin:/sbin
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable |
或者,您也可以编辑配置文件:
1 2 3 4 5
| $ cat /etc/profile
#!/bin/sh
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable |
另一种方式(感谢gniourf gniourf):
1
| echo 'PATH=$PATH:/new/path/variable' >> /etc/profile |
You shouldn't use double quotes here! echo 'export
PATH=$PATH:/new/path/variable'... And by the way, the export keyword
is very likely useless as the PATH variable is very likely already
marked as exported. – gniourf_gniourf
- 不。这里不应该使用双引号!echo 'export PATH=$PATH:/new/path/variable'…顺便说一下,export关键字很可能是无用的,因为PATH变量很可能已经标记为导出。
- 不,您应该使用双引号,因为单引号中的$path没有插入。btw导出也很有用。
- 我得到了它。您可以使用双引号或单引号,因为执行echo时插入$path,或执行/etc/profile时插入。
- @实际上,如果要从多个文件附加到$path,双引号会导致很多问题。考虑:当您使用双引号时,$path被转换为一个静态字符串,其中包含所有先前定义的路径目录。假设您使用~/.bashrc将/usr/local附加到它。现在,如果您打算使用/etc/bash.bashrc将/opt/bin附加到同一个变量;$path将转换为同一个静态字符串,因此$path将被替换,而不是附加到…这将取决于系统对一个文件的偏好而不是另一个文件。
/etc/profile.dadd to folder with在线:export PATH=$PATH:/dir[name_of_script].sh脚本。每个脚本自动executed is within /etc/profile.dfolder /etc/profile在线登录模式。P></
- 这是如何自定义环境的建议方法
- 只有当您希望设置在系统范围内时,这可能不是最常见的用例。大多数人希望(或应该)在本地设置路径,因为大多数用户/角色都在执行上下文不同的操作,您所做的假设越少越好。
- @MPowered,是的,这只适用于整个系统。如果希望在本地更改路径,则应在~/.profile或~/.bashrc中添加相同的导出。在这里,您应该考虑登录shell读取~/.profile和交互式shell读取~/.bashrc。这一点非常重要,因为例如ssh不进行登录,因此~/.profile将不会被读取。一些分布,如suse source~/.bashrc in/etc/profile。但对于所有的Linux来说,这并不常见
使用
Homebrew快速安装
查看此视频
或
下面的步骤
Step 1:打开https://brew.sh/
复制上面屏幕截图中显示的URL
/usr/bin/ruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
在终端中粘贴复制的URL并点击返回/输入键
完成自制安装后,请执行步骤2:
Step 2:从https://www.terraform.io/downloads.html下载terraform
提取下载的zip地形文件
现在,您将在下载的文件夹中有一个文件名terraform
例如
/Users/username/downloads/terraform
Step 3:打开一个terminal。
cd:目录改为/Users/username/downloads/terraform。
Step 4:在终端运行brew install terraform。
- 我猜你有两种安装方式,你检查过这个bonusbits.com/wiki/howto:install-terraform-on-macos吗?
我认为最优雅的方式是:P></
在这1.add ~ bashrc /文件。P></
1 2 3
| if [ -d"new-path" ]; then
PATH=$PATH:new-path
fi |
来源/ .bashrc ~P></
(Ubuntu的)P></
- 并在上面之后显示路径:printf"%s"$path
最好的简单方法如下:PATH=":$PATH"在home目录下的.bashrc文件中。即使关闭终端或重新启动PC,它也不会被重置。
- 这并没有告诉我们如何使它永久化。
- @定量如果你做了所说的,它将永久设置你的设置。即使你关闭终端,它也能工作。
对于Debian发行版,您必须:
1 2 3
| - edit ~/.bashrc e.g: vim ~/.bashrc
- add export PATH=$PATH:/path/to/dir
- then restart your computer. Be aware that if you edit ~/.bashrc as root, your environment variable you added will work only for root |
1.修改"/etc/profile"文件。
按"I"键进入编辑状态并将光标移动到文件末尾,其他条目:
1
| export PATH=$PATH:/path/to/dir; |
按"Esc"键退出编辑状态,:wq'保存文件。
2.使配置有效
说明:配置文件适用于所有用户,如果您只想对活动用户有效,请设置".bashrc"文件
单程to add永路径挤压,which is for我:profile.d/etc/CD触摸custom.sh你custom.sh出口路径:路径=美元/路径/根据你的设置重新启动你的计算机和在这里,我们将去那里permanently路径干杯。P></
它can be added directly by using the following命令:P></
回声路径:路径=出口美元/纽约/目录/ .zshrc >> ~源/ .zshrc ~P></
- 这个问题被标为bash,所以没有什么帮助。
- 这是一个有效的答案->标题只提到Linux,所以bash和zsh会做…如果标签只是"bash",我们也需要在标签中添加"zsh"。