理解环境变量

1.什么是环境变量?

由于linux是一个多用户的操作系统,所以每个用户都有自己的专用的运行环境。而这个环境有一组变量所定义,这组变量就是环境变量。用户可以对自己环境变量进行修改以达到环境的要求。

环境变量是和Shell紧密相关的,它是通过Shell命令来设置的。
环境变量又可以被所有当前用户所运行的程序所使用。对于bash来说,可以通过变量名来访问相应的环境变量。(shell)

2.linux中常见的环境变量

PATH:指定命令的搜索路径

[[email protected] /]$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/xjf/bin

HOME:指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)

[[email protected] /]$ echo $HOME
/home/xjf

HISTSIZE:指保存历史命令记录的条数。

[[email protected] /]$ echo $HISTSIZE
1000

LOGNAME:指当前用户的登录名。

[[email protected] /]$ echo $LOGNAME
xjf

HOSTNAME:指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中的。

[[email protected] /]$ echo $HOSTNAME
localhost.localdomain

SHELL:指当前用户用的是哪种Shell。

[[email protected] /]$ echo $SHELL
/bin/bash

LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。

[[email protected] /]$ echo $LANG
zh_CN.UTF-8

MAIL:指当前用户的邮件存放目录。

[[email protected] /]$ echo $MAIL
/var/spool/mail/xjf

PS1:命令基本提示符,对于root用户是#,对于普通用户是$。

[[email protected] /]$ echo $PS1
[\[email protected]\h \W]\$

PS2:附属提示符,默认是“>”。

[[email protected] /]$ echo $PS2
>

3.修改环境变量

/*1.显示环境变量*/

[[email protected] /]$ echo $HOME
/home/xjf

/*2.设置一个新的环境变量*/

[[email protected] /]$ echo $NAME

[[email protected] /]$ export NAME="haotian"
[[email protected] /]$ echo $NAME 
haotian

/*3.显示所有的环境变量*/

[[email protected] /]$ env

/*4.显示本地定义的shell变量*/

[[email protected] /]$ set

/*5.清除环境变量*/

[[email protected] /]$ echo $NAME
haotian
[[email protected] /]$ unset NAME
[[email protected] /]$ echo $NAME

/*6.设置只读环境变量*/

[[email protected] /]$ readonly NAME
[[email protected] /]$ unset NAME
bash: unset: NAME: cannot unset: readonly variable
[[email protected] /]$ export NAME="diudiudiu"
bash: NAME: readonly variable

//设置只读变量后,这个变量就不允许修改,如果你还是想修改的话,就可以先切换到root底下,然后
//在切回来就可以了(也可以退出当前用户,然后再进来)

[[email protected] ~]$ unset NAME
[[email protected] ~]$ export NAME="diudiudiu"
[[email protected] ~]$ echo $NAME
diudiudiu
[[email protected] ~]$ readonly NAME
[[email protected] ~]$ unset NAME
-bash: unset: NAME: cannot unset: readonly variable
[[email protected] ~]$ exit 
logout
[[email protected] ~]# su - xjf
[[email protected] ~]$ unset NAME
[[email protected] ~]$ echo $NAME

[[email protected] ~]$ export NAME="haotian"
[[email protected] ~]$ echo $NAME
haotian

为什么这个直接退出,它就可以改了,由于在linux变量种类如果按生存周期分可以分为两类:

1.永久的:需要修改配置文件,变量永久有效

2.临时的:使用export定义的变量,变量在用户改变时失效。

最后看下面这个例子:

[[email protected] Test_1]$ cat a.c
/*************************************************************************
	> File Name: a.c
	> Author:    xjf
	> Mail:      [email protected]
	> Created Time: Sat 14 May 2016 12:07:45 PM CST
 ************************************************************************/

#include<stdio.h>

int main()
{
	printf("First linux program\n");
	return 0;
}
[[email protected] Test_1]$ gcc -o a a.c 
[[email protected] Test_1]$ ./a
First linux program
[[email protected] Test_1]$ a
-bash: a: command not found
[[email protected] Test_1]$ gcc -o a.exe a.c
[[email protected] Test_1]$ a.exe
-bash: a.exe: command not found

//上面这个可执行程序a和a.exe为什么不能执行,./a就可以执行呢??

原因是可执行程序所在的目录没有包含在环境变量PATH的值中。在这种情况下,用户必须给出可执行文件的完整路径名才能运行指定的可执行文件。在上面的情况中,圆点符号(.) 表示当前目录。接下来看下面方式:

[[email protected] Test_1]$ a
-bash: a: command not found
[[email protected] Test_1]$ a.exe
-bash: a.exe: command not found
[[email protected] Test_1]$ /home/xjf/test/Test_1/a
First linux program
[[email protected] Test_1]$ /home/xjf/test/Test_1/a.exe
First linux program

//就可以完美执行了

也可以通过修改环境变量的方式来达到目的:

[[email protected] Test_1]$ ll
total 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
[[email protected] Test_1]$ a
-bash: a: command not found
[[email protected] Test_1]$ a.exe
-bash: a.exe: command not found
[[email protected] Test_1]$ pwd
/home/xjf/test/Test_1
[[email protected] Test_1]$ export PATH=$PATH:/home/xjf/test/Test_1
[[email protected] Test_1]$ a
First linux program
[[email protected] Test_1]$ a.exe
First linux program
[[email protected] Test_1]$ ./a
First linux program
[[email protected] Test_1]$ ./a.exe 
First linux program

好(you)神(need)奇(weight),唔哈哈哈!!

时间: 2024-12-13 10:14:15

理解环境变量的相关文章

快速理解环境变量

操作系统的环境变量,说简单一点就是帮助操作系统去正确的路径下面找到可执行的程序. 举个例子 大家都知道 DOS 命令有一个叫做  ipconfig  是用来查看本地电脑IP地址的. 这个命令其实就是一个可执行的.exe文件  路径就在  C:\Windows\System32 下面 我们把环境变量中path值的这一段( C:\Windows\System32)去掉 再去ipconfig 就会报错:ipconfig 不是内部或外部命,也不是可运行的程序,就是操作系统找不到这个程序了. 类似的还的j

Java环境变量理解及配置

环境变量理解 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等. 环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找.用户通过设置环境变量,来更好的运行进程. JAVA环境变量配置

环境变量、cp、mv、cat 等命令

1.环境变量: PATH 个人理解 环境变量,即是所有命令文件所存放的目录,或是人为的定义的目录,(命令文件所存放的目录,当输入一个命令的时候,系统会自动找到且不报错,并不需要输入绝对路径,来运行相关命令) 环境变量的改变: cp 命令:复制命令 把一个文件复制到另一个地方(把一个目录复制到另一个目录) cp [OPTION]...   SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY 注意:在复制目录的时候 需要加的参数是 cp -r SOURCE.

环境变量和文件查找&amp;文件打包与解压缩

环境变量和文件查找 介绍环境变量的作用与用法 及几种搜索文件的方法 学会这些技巧可以高效地使用 Linux 知识点:环境变量的设置 环境变量的修改 环境变量 要解释环境变量,得先明白变量是什么,准确的说应该是 Shell 变量,所谓变量就是计算机中用于记录一个值(不一定是数值,也可以是字符或字符串)的符号,而这些符号将用于不同的运算处理中,通常变量与值是一对一的关系,可以通过表达式读取它的值并赋值给其它变量,也可以直接指定数值赋值给任意变量.为了便于运算和处理,大部分的编程语言会区分变量的类型,

深入理解Java中配置环境变量

配置的目的: 本来只在安装JDK的bin目下能运行java.exe,javac.exe,jar.exe,javadoc.exe等Java开发工具包命令,我们现在想让在所有目录下都能运行这些命令. 配置的解决途径: 将这个目录放在windows的环境变量path中即可 找所需命令的过程: 如果想运行javac.exe命令,先在自己的文件夹里面找有没有这个,没有就去电脑的path里面找 通俗理解: 配置classpath的过程就像我们把钱存在银行的过程,然后在世界各地我们要用的时候直接从银行取就好.

ubuntu下关于profile和bashrc中环境变量的理解

(0) 写在前面 有些名词可能需要解释一下.(也可以先不看这一节,在后面看到有疑惑再上来看相关解释) 启动bash shell:就是启动一个bash shell进程,通常可以理解为打开一个终端.需要注意的是如果你在终端输入sh后会发现自己又进入另一个交互式界面,这个时候其实fork了一个shell 子进程,如果你在这个交互式界面又输入了一次sh,那么相当于fork的shell子进程又fork了一个shell子进程,这个时候就启动了三个bash shell进程. 输入exit或者ctrl-d可以退

理解及操作环境变量(基于Mac操作)

通过本文,简单的了解环境变量及其操作,与便于遇到相关问题时能够准确快捷的解决. 什么是环境变量 An environment variable is a dynamic-named value that can affect the way running processes will behave on a computer. --- wikipedia 转成中文大概就是 " 环境变量是一个动态命名的值,这个值能够影响计算机如何运行程序" ,接下来根据例子来理解可能会更好~ 当用户在

java基础(一):我对java的三个环境变量的简单理解和配置

首先说说java的三个环境变量:java_home,classpath,path java_home:jdk的安装路径[你一层一层点开安装路径,直到当前目录有一个bin目录,然后在地址栏里面右键单击复制地址就是jdk的安装路径(eg:D:\Java\jdk1.8.0_65)],没有其实也可以,在用到jdk的安装路径直接使用也可以.不过为了方便,因为许多的其它环境变量需要用到jdk的安装路径(eg:path), 如果直接使用jdk的安装路径,不封装到java_home中,一旦jdk更新了就需要一个

环境变量之path的一点理解

最初安装java环境时一直不明白为什么要配置环境变量,百度了一下还是理解不透彻. 后来安装python时也要配置环境变量.. 在经过未配置和配置的操作后,才有些理解path的含义. 1.未配置环境变量 WIN+R-->cmd-->输入:python  会有以下提示 2.未配置环境变量 WIN+R-->cmd-->cd(切换)到python的安装路径下-->输入:python   会运行python解释器 3.配置环境变量(将python的安装目录加入到path变量值中,与原有