84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
在/etc/profile 中有PATH变量, PATH=$PATH:/usr/local/php-5.5/bin 与 export PATH=$PATH:/usr/local/php-5.5/bin 有什么区别?
/etc/profile
PATH=$PATH:/usr/local/php-5.5/bin
export PATH=$PATH:/usr/local/php-5.5/bin
======== source命令是在当前的shell中执行shell脚本,而不是在子shell当中,是吗?
首先,export 是 POSIX 兼容 shell 的语法的一部分,而和 Linux 没有必然的关系。它不是命令,而是一种修饰符(和 bash / zsh 中的 integer, local 之类的声明类似)。
export
integer
local
其次,export 的意义。export var 表示,变量 var 作为环境变量,将会被该 shell 的子进程继承。默认情况下 POSIX 兼容 shell 里的变量都只是 shell 自己用的,不是环境变量,也不会被子进程继承。export var=xxx 是 bash 等支持的简写语法。var=xxx cmd 是只为单条命令设置 var 环境变量用的语法。
export var
var
export var=xxx
var=xxx cmd
最后,关于 PATH 环境变量。它是一个环境变量,意味着它已经被 exported 了。PATH、HOME 这些本身就是环境变量的变量,不需要显式地 export 的。所以没有区别。
PATH
HOME
关于 source 或者 .,是的。它表示从指定文件(路径会使用 PATH 变量搜索,与可执行文件一样)中读取并执行脚本,和你手动在 shell 提示符后输入那些内容差不多。source 这个术语也不仅仅用于 shell 中。
source
.
我认为没什么区别,其实你的 /etc/profile 会在系统启动的时候会执行 source /etc/profile ,只不过不是你自己运行而已。
首先,
export
是 POSIX 兼容 shell 的语法的一部分,而和 Linux 没有必然的关系。它不是命令,而是一种修饰符(和 bash / zsh 中的integer
,local
之类的声明类似)。其次,
export
的意义。export var
表示,变量var
作为环境变量,将会被该 shell 的子进程继承。默认情况下 POSIX 兼容 shell 里的变量都只是 shell 自己用的,不是环境变量,也不会被子进程继承。export var=xxx
是 bash 等支持的简写语法。var=xxx cmd
是只为单条命令设置var
环境变量用的语法。最后,关于
PATH
环境变量。它是一个环境变量,意味着它已经被export
ed 了。PATH
、HOME
这些本身就是环境变量的变量,不需要显式地export
的。所以没有区别。关于
source
或者.
,是的。它表示从指定文件(路径会使用PATH
变量搜索,与可执行文件一样)中读取并执行脚本,和你手动在 shell 提示符后输入那些内容差不多。source 这个术语也不仅仅用于 shell 中。在/etc/profile 中有PATH变量, PATH=$PATH:/usr/local/php-5.5/bin 与 export PATH=$PATH:/usr/local/php-5.5/bin 有什么区别?
我认为没什么区别,其实你的 /etc/profile 会在系统启动的时候会执行 source /etc/profile ,只不过不是你自己运行而已。