在/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 ,只不过不是你自己运行而已。