Answers:
一个区别是/etc/environment
仅包含变量定义,并且似乎不经历任何形式的变量扩展/插值。因此,您不能在定义中引用变量。例如,这将不起作用:
A="else"
B="something $A"
B从字面上是something $A
,不是预期的something else
。
看到这个问题。
顺便说一句,您通过Google找到的答案似乎是针对用户的~/.bashrc
,而不是系统范围的/etc/bash.bashrc
。那可能会引起您的困惑。
该/etc/environment
文件在启动时为每个用户设置系统范围的变量。/etc/bash.bashrc
如果bash
外壳由任何用户打开,则将执行中的命令。因此,除非bash
至少打开一次外壳,否则不会设置变量。
当您询问“ 系统范围 ”时:
/etc
目录中的配置文件适用于系统上的所有用户。对于/etc/bash.bashrc
这一切,这将意味着在该计算机上使用“ Borne Again SHell”(又名Bash)的所有事物。即使您是唯一使用它的人,也可能会影响“技术用户”(只需查看/etc/passwd
并检查“ / bin / bash”一词在grep bash /etc/passwd | wc -l
其中的使用频率-或use ,它应该会给您直接使用该数字(意思是:“抢”文件“ / etc / passwd”中包含字符串“ bash”的所有行,并将结果(“ |”)发送到命令“ wc”(字数统计)以对行进行计数(“ -l”)。
因此,对您的用户而言,进行修改~/.bashrc
(表示文件“ .bashrc”(例如/home/ankur/.bashrc
,在主目录中带有前导点,是的))要安全得多,这只会影响您的用户,而将其他所有内容都保留下来。/etc
仅当确实要在系统范围内进行更改时,才应更改文件中的文件。
此外:如果存在,将使用两种配置。首先,/etc/bash.bashrc
读取系统范围的文件(在这里:)并“获取”(将其设置应用于当前会话),然后对用户/home/username/.bashrc
进行相同的处理,从而可以从全局添加或更改/覆盖设置/etc/bash.bashrc
文件。
除了系统范围和用户范围广泛的讨论中,一个最显著差别/etc/environment
是不是比其他的脚本~/.bashrc
。
您/etc/environment
不能取消引用变量inside ,它的变量赋值从字面上接受行值(如roadmr所述)。
如果您尝试通过添加新路径来破坏$PATH
内部/etc/environment
,那么您的Ubuntu就会将您锁定
PATH=$PATH:/new_path
如果您的Ubuntu Gnome或Unity登录页面无法让您进入而没有抱怨密码错误。而且您最近进行了修改/etc/environment
,很可能是这种情况。
解决方法是登录虚拟控制台CTRL+ ALT+ F1登录控制台,手动检查$PATH
并修复/etc/environment
文件。
根据此,/etc/environment
通过PAM堆栈,它由线填充环境变量线加载。
两者之间的区别在于,该/etc/enivironment
文件将对所有用户均有效,而bash.bashrc文件将仅对该用户有效。而且,如果您在/etc/environment
文件中做任何错误,那么后果可能很严重,同时您可以通过复制/ etc / environment文件的内容轻松撤消bash.bashrc文件中的更改。但是首先要优先考虑的是bash.bashrc
文件,然后是/ etc / environment文件。并不是如果您在bash.bashrc
文件中进行更改,那么终端将首先给本地用户文件(即bash.bashrc
)提供优先级,然后再给主文件(即/etc/environment
)提供优先级。