printenv命令和env命令一样,都是用来输出当前系统环境变量的值。
# type printenv
printenv is /bin/printenv
# type env
env is /usr/bin/env
# printenv
CONSOLE=/dev/console
LD_LIBRARY_PATH=......
HOME=/
TERM=linux
PATH=/bin:/usr/bin:/sbin:/usrbin
RUNLEVEL=5
PREVLEVEL=N
PWD=/
#
# env
CONSOLE=/dev/console
LD_LIBRARY_PATH=......
HOME=/
TERM=linux
PATH=/bin:/usr/bin:/sbin:/usrbin
RUNLEVEL=5
PREVLEVEL=N
PWD=/
从以上结果看,printenv和env这两条命令输出的结果都是一样的。
那二者之间就没有区别吗?
答案是否定的,如果二者真没有区别,也就没有必要弄两个命令出来了。
从以下的结果看,
printenv命令可以直接输出一个指定的环境变量的值;
而env命令却只能显示当前系统中所有的环境变量的值。
# env PATH
env: PATH: No such file or directory
#
# printenv PATH
/bin:/usr/bin:/sbin:/usrbin
#
# echo $PATH
/bin:/usr/bin:/sbin
#
虽然有此差别,但是很多时候真的差别不大的,
# env | grep $PATH
PATH=/bin:/usr/bin:/sbin
# printenv PATH
/bin:/usr/bin:/sbin