理解环境变量
来源:互联网 发布:淘宝如何自动发卡密 编辑:程序博客网 时间:2024/06/01 09:43
1.什么是环境变量?
由于linux是一个多用户的操作系统,所以每个用户都有自己的专用的运行环境。而这个环境有一组变量所定义,这组变量就是环境变量。用户可以对自己环境变量进行修改以达到环境的要求。
环境变量是和Shell紧密相关的,它是通过Shell命令来设置的。环境变量又可以被所有当前用户所运行的程序所使用。对于bash来说,可以通过变量名来访问相应的环境变量。(shell)
2.linux中常见的环境变量
PATH:指定命令的搜索路径
[xjf@localhost /]$ echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/xjf/bin
HOME:指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
[xjf@localhost /]$ echo $HOME/home/xjf
HISTSIZE:指保存历史命令记录的条数。
[xjf@localhost /]$ echo $HISTSIZE1000
LOGNAME:指当前用户的登录名。
[xjf@localhost /]$ echo $LOGNAMExjf
HOSTNAME:指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中的。
[xjf@localhost /]$ echo $HOSTNAMElocalhost.localdomain
SHELL:指当前用户用的是哪种Shell。
[xjf@localhost /]$ echo $SHELL/bin/bash
LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
[xjf@localhost /]$ echo $LANGzh_CN.UTF-8
MAIL:指当前用户的邮件存放目录。
[xjf@localhost /]$ echo $MAIL/var/spool/mail/xjf
PS1:命令基本提示符,对于root用户是#,对于普通用户是$。
[xjf@localhost /]$ echo $PS1[\u@\h \W]\$
PS2:附属提示符,默认是“>”。
[xjf@localhost /]$ echo $PS2>
3.修改环境变量
/*1.显示环境变量*/[xjf@localhost /]$ echo $HOME/home/xjf/*2.设置一个新的环境变量*/[xjf@localhost /]$ echo $NAME[xjf@localhost /]$ export NAME="haotian"[xjf@localhost /]$ echo $NAME haotian/*3.显示所有的环境变量*/[xjf@localhost /]$ env/*4.显示本地定义的shell变量*/[xjf@localhost /]$ set/*5.清除环境变量*/[xjf@localhost /]$ echo $NAMEhaotian[xjf@localhost /]$ unset NAME[xjf@localhost /]$ echo $NAME/*6.设置只读环境变量*/[xjf@localhost /]$ readonly NAME[xjf@localhost /]$ unset NAMEbash: unset: NAME: cannot unset: readonly variable[xjf@localhost /]$ export NAME="diudiudiu"bash: NAME: readonly variable//设置只读变量后,这个变量就不允许修改,如果你还是想修改的话,就可以先切换到root底下,然后//在切回来就可以了(也可以退出当前用户,然后再进来)[xjf@localhost ~]$ unset NAME[xjf@localhost ~]$ export NAME="diudiudiu"[xjf@localhost ~]$ echo $NAMEdiudiudiu[xjf@localhost ~]$ readonly NAME[xjf@localhost ~]$ unset NAME-bash: unset: NAME: cannot unset: readonly variable[xjf@localhost ~]$ exit logout[root@localhost ~]# su - xjf[xjf@localhost ~]$ unset NAME[xjf@localhost ~]$ echo $NAME[xjf@localhost ~]$ export NAME="haotian"[xjf@localhost ~]$ echo $NAMEhaotian
为什么这个直接退出,它就可以改了,由于在linux变量种类如果按生存周期分可以分为两类:
1.永久的:需要修改配置文件,变量永久有效
2.临时的:使用export定义的变量,变量在用户改变时失效。
最后看下面这个例子:
[xjf@localhost Test_1]$ cat a.c/*************************************************************************> File Name: a.c> Author: xjf> Mail: doo_magic@126.com> Created Time: Sat 14 May 2016 12:07:45 PM CST ************************************************************************/#include<stdio.h>int main(){printf("First linux program\n");return 0;}[xjf@localhost Test_1]$ gcc -o a a.c [xjf@localhost Test_1]$ ./aFirst linux program[xjf@localhost Test_1]$ a-bash: a: command not found[xjf@localhost Test_1]$ gcc -o a.exe a.c[xjf@localhost Test_1]$ a.exe-bash: a.exe: command not found//上面这个可执行程序a和a.exe为什么不能执行,./a就可以执行呢??
原因是可执行程序所在的目录没有包含在环境变量PATH的值中。在这种情况下,用户必须给出可执行文件的完整路径名才能运行指定的可执行文件。在上面的情况中,圆点符号(.) 表示当前目录。接下来看下面方式:
[xjf@localhost Test_1]$ a-bash: a: command not found[xjf@localhost Test_1]$ a.exe-bash: a.exe: command not found[xjf@localhost Test_1]$ /home/xjf/test/Test_1/aFirst linux program[xjf@localhost Test_1]$ /home/xjf/test/Test_1/a.exeFirst linux program//就可以完美执行了
也可以通过修改环境变量的方式来达到目的:
[xjf@localhost Test_1]$ lltotal 20-rwxrwxr-x. 1 xjf xjf 4691 May 14 12:27 a-rw-rw-r--. 1 xjf xjf 347 May 14 12:08 a.c-rwxrwxr-x. 1 xjf xjf 4691 May 14 12:11 a.exe[xjf@localhost Test_1]$ a-bash: a: command not found[xjf@localhost Test_1]$ a.exe-bash: a.exe: command not found[xjf@localhost Test_1]$ pwd/home/xjf/test/Test_1[xjf@localhost Test_1]$ export PATH=$PATH:/home/xjf/test/Test_1[xjf@localhost Test_1]$ aFirst linux program[xjf@localhost Test_1]$ a.exeFirst linux program[xjf@localhost Test_1]$ ./aFirst linux program[xjf@localhost Test_1]$ ./a.exe First linux program
好(you)神(need)奇(weight),唔哈哈哈!!
本文出自 “Pzd流川枫” 博客,请务必保留此出处http://xujiafan.blog.51cto.com/10778767/1773294
- 理解环境变量
- Windows环境变量的理解
- 理解本地语言环境变量
- 如何理解环境变量?
- 快速理解环境变量
- 理解Windows XP的环境变量
- linux用户环境变量的理解
- 帮你理解Linux环境变量
- java中的环境变量设置---理解
- Linux各环境变量的理解
- 在配置java环境变量上理解Windows环境变量
- JAVA环境变量的理解与配置
- 关于java环境变量的一些理解
- 理解Linux环境变量及配置文件执行顺序
- 深入理解Java的环境变量配置
- 理解Linux环境变量及配置文件执行顺序
- 理解Linux环境变量及配置文件执行顺序
- 新手理解的bash环境变量解析漏洞
- 二叉树基础
- C++ 复杂链表的复制
- 结构体内存对齐
- 二分法查找元素位置
- 防止头文件多次引入
- 理解环境变量
- 部分find命令使用
- Eclipse + Python 的安装与配置流程
- Mysql读写分离,同步复制的探索实现
- Jenkins 权威指南(中文版) 第一章 Jenkins的介绍
- Android自定义控件实战——滚动选择器PickerView
- JSF对应的实体类一定要使用set和get方法
- poj 2010 优先队列~
- Linux及Arm-Linux程序开发笔记(零基础入门篇)