定制环境变量 
  环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它的Shell。环境变量文件:/etc/profile。 环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,通过export来设置环境变量。下面通过几个实例来说明。

建议修改用户级别的环境变量,不建议修改系统级别的环境变量

 1. 显示环境变量HOME 
  $ echo $HOME
  /home/terry
  
  2. 设置一个新的环境变量WELCOME 
  $ export WELCOME="Hello!"
  $ echo $WELCOME
  Hello!
  
  3. 使用env命令显示所有的环境变量 
  $ env
  HOSTNAME=terry.mykms.org
  PVM_RSH=/usr/bin/rsh
  SHELL=/bin/bash
  TERM=xterm
  HISTSIZE=1000
  ...
  
  4. 使用set命令显示所有本地定义的Shell变量 
  $ set
  BASH=/bin/bash
  BASH_VERSINFO=([0]="2"[1]="05b"[2]="0"[3]="1"[4]="release"[5]="i386-redhat-linux-gnu")
  BASH_VERSION='2.05b.0(1)-release'
  COLORS=/etc/DIR_COLORS.xterm
  COLUMNS=80
  DIRSTACK=()
  DISPLAY=:0.0
  ...
  
  5. 使用unset命令来清除环境变量 
  set可以设置某个环境变量的值。清除环境变量的值用unset命令。如果未指定值,则该变量值将被设为NULL。示例如下: 
  $ export TEST="Test..." #增加一个环境变量TEST
  $ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了
  TEST=Test...
  $ unset $TEST #删除环境变量TEST
  $ env|grep TEST #此命令没有输出,证明环境变量TEST已经存在了
  
  6. 使用readonly命令设置只读变量 
  如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下: 
  $ export TEST="Test..." #增加一个环境变量TEST
  $ readonly TEST #将环境变量TEST设为只读
  $ unset TEST #会发现此变量不能被删除
  -bash: unset: TEST: cannot unset: readonly variable
  $ TEST="New" #会发现此也变量不能被修改
  -bash: TEST: readonly variable
  
  7. 用C程序来访问和设置环境变量 
  对于C程序的用户来说,可以使用下列三个函数来设置或访问一个环境变量。 
  
  ◆ getenv()访问一个环境变量。输入参数是需要访问的变量名字,返回值是一个字符串。如果所访问的环境变量不存在,则会返回NULL。 
  
  ◆ setenv()在程序里面设置某个环境变量的函数。 
  
  ◆ unsetenv()清除某个特定的环境变量的函数。 
  
  另外,还有一个指针变量environ,它指向的是包含所有的环境变量的一个列表。

      8.修改配置文件

通过在控制台输入export命令的方式配置的环境变量只在当前控制台下作用。当你启动另一个shell时候将消失

而修改配置文件则是一个一劳永逸的方法,尽管一般不这么用。

#vi /etc/profile (对系统下所有用户起作用)

# vi /home/funway/.bashrc (对funway这个用户起作用)

source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName文件中的shell命令。

我现在的工作中,经常将要配置的环境变量写在一个文件中,例如xt300.env, 然后执行命令

source xt300.env

由于是只在当前shell中执行,所以source设置的环境变量只改变当前shell的环境。

你新打开一个控制台,会发现它的环境变量并不会有source新设置的内容。

1.当前用户级别的环境变量

vim  ~/.profile

source ~/.profile 使其生效

输出结果

在python中调用环境变量

one = os.environ.get('ABC')

print(one)

结果为:123

2.系统级别的环境变量

sudo vim /etc/profile

source /etc/profile   使其生效




linux环境变量设置 以及 source命令 Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程 Linux 设置环境变量的更多相关文章

  1. linux下系统启动时,几个配置文件 /etc/profile、~/.bash_profile 等几个文件的执行过程,先后顺序

    1. 在登录Linux时要执行文件的过程如下: 在刚登录Linux时, 首先启动 /etc/profile 文件, 然后再启动用户目录下的 ~/.bash_profile. ~/.bash_login ...

  2. 【转】Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程

    原文网址:http://blog.csdn.net/ithomer/article/details/6322892 在登录Linux时要执行文件的过程如下:在刚登录Linux时,首先启动 /etc/p ...

  3. bash命令检测Shell脚本中的语法错误和查看详细执行过程

    (1).bash命令检测Shell脚本中的语法错误 bash -v [脚本] [root@youxi1 ~]# vim a.sh #/bin/bash sum=$[$1+$2] echoo $sum ...

  4. 给.sh文件添加执行权限linux

    chmod是权限管理命令change the permissions mode of a file的缩写.. u代表所有者,x代表执行权限. + 表示增加权限. chmod u+x file.sh 就 ...

  5. linux下 /etc/profile、~/.bash_profile ~/.profile的执行过程

    关于登录linux时,/etc/profile.~/.bash_profile等几个文件的执行过程. 在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile ...

  6. [转] linux下 /etc/profile、~/.bash_profile ~/.profile的执行过程

    分类: linux 2015-03-13 16:24 1572人阅读 评论(0) 收藏 举报linuxprofile关于登录linux时,/etc/profile.~/.bash_profile等几个 ...

  7. Linux必学的60个命令

    inux必学的60个命令Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想 ...

  8. 【转】linux 必须掌握的60个命令

    Linux必学的60个命令Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要 ...

  9. Linux必学的60个命令【转载】

    Linux提供了大量的命令,利用它可以有效地完成大量的工 作,如磁盘操作.文件存  [转载地址]http://blog.chinaunix.net/uid-16728139-id-3154272.ht ...

随机推荐

  1. global语句(python学习手册422页)

    # -*- coding: cp936 -*- #python 27 #xiaodeng #global语句(python学习手册422页) #实际上就是一个名为__builtin__的模块,但是必须 ...

  2. Android 华为U8818真机调试 无法打印Logcat

    摘抄至:http://blog.csdn.net/studyalllife/article/details/8558258 在我们使用真机进行Android应用调试时,无法获得调试信息,错误提演示样例 ...

  3. JPA实体继承实体的映射策略

    注:这里所说的实体指的是@Entity注解的类 继承映射使用@Inheritance来注解.它的strategy属性的取值由枚举InheritanceType来定义(包含SINGLE_TABLE.TA ...

  4. 【laravel5.4】php artisan migrate报错:Specified key was too long; max key length is 767 bytes

    1.原因:在进行 迁移文件生成时,程序并未给varchar类型字段设置 合适的长度,导致报错. 2.解决办法:找到database/ 目标迁移文件,修改其中类型为string的字段长度,建议不要超过2 ...

  5. Python监控文件变化:watchdog

    Python监控文件变化有两种库:pyinotify和watchdog.pyinotify依赖于Linux平台的inotify,后者则对不同平台的的事件都进行了封装.也就是说,watchdog跨平台. ...

  6. iOS - UnitTests 单元测试

    1.UnitTests 在计算机编程中,单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可测试部件.在过程化编 ...

  7. jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding

    Jquery ajax调用WCF服务 例子效果如下:原界面 点击按钮GetList get后,通过指定的Url获取数据添加到table 新建一个控制台项目,添加IContract.cs,DBServi ...

  8. Android 中日期对话框的应用

    import java.util.Calendar; import android.widget.DatePicker; import android.app.DatePickerDialog; // ...

  9. android语音识别方法

    http://www.apkbus.com/forum.php?mod=viewthread&tid=3473 android语音识别方法一:使用intent调用语音识别程序 1. 说明 以下 ...

  10. Linux内核(2) - 分析内核源码如何入手(上)

    透过现象看本质,兽兽们无非就是一些人体艺术展示.同样往本质里看过去,学习内核,就是学习内核的源代码,任何内核有关的书籍都是基于内核,而又不高于内核的. 既然要学习内核源码,就要经常对内核代码进行分析, ...