?潭水无风?

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1.环境变量是什么?

在Windows系统中,很多软件都必须通过"高级系统设置"设置"环境变量",那么环境变量究竟是什么呢?通俗说就是指定一个或多个目录,运行软件的时候,相关的程序会按照指定的目录寻找相关文件,比如很多软件安装时会添加库路径。

设置环境变量对于一般人最实用的功能就是:不用拷贝dll文件或其他库

文件到系统目录中,而PATH环境变量就是相关软件搜索dll文件或其他库文件的路径;

Linux系统下同样如此,如果你下载并按照了应用程序,使用时出现"command not found"的提示内容,那么你不可回避的要设置环境变量PATH。

2.Ubuntu中环境变量相关文件

本人使用Ubuntu 16.04 LTS操作系统,Ubuntu中主要有如下几个文件可以设置环境变量

  • /etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
  • /etc/environment:在登录时操作系统使用的第二个文件,系统在读取你的profile前,设置环境文件的环境变量,该设置方法和Windows7/8类似,不作重点介绍。
  • ~/.profile:在登录时用到的第三个文件是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
  • /etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。
  • ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

3.Linux环境变量配置的三个方法

Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境的定义。用户可以对自己的环境进行定制,其方法就是修改相应的系统环境变量。

(1).shell(针对shell):终端命令行中临时使用,关闭终端窗口后失效,且只对当前shell(BASH)有效(临时)。重新打开终端窗口是没有任何作用的。

export PATH="$PATH:/my_new_path" #export [-fnp] 变量名=变量设置值

 

(2).修改~/.bashrc(针对用户):针对特定用户,这种方法比较安全,可以把使用这些环境变量的权限控制到用户级别,如果需要给某个用户权限使用这些环境变量,只需要修改用户主目录下的.bashrc文件就可以了。

vi ~/.bashrc
export PATH="$PATH:/my_new_path" #export 变量名=变量设置值
source /etc/profile #. /etc/profile 执行profile文件也会立即生效

 

(3).修改/etc/profile(针对全局):针对所有用户和shell长久有效。如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,但注意可能会给系统带来安全性问题。

$ vi /etc/profile
export PATH="$PATH:/my_new_path" #export 变量名=变量设置值

使用source /etc/profile

source /etc/profile #. /etc/profile 执行profile文件也会立即生效

 

4.常见环境变量:

PATH:决定了shell将到哪些目录中寻找命令或程序

HOME:当前用户主目录

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

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

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

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

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

LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
 
PS1:是基本提示符,对于root用户是#,对于普通用户是$。
PS2:是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,MyNewPrompt :) ”。
# PS1=” Hello,My NewPrompt :) “

 

5.环境变量设置注意:

(1).Linux系统认定的相同名字的环境变量,后写入的先起作用。 

(2).":"表示并列含义

(3).使用env命令显示所有的环境变量。在命令提示符下收入env就行了。set命令显示所有本地定义的shell变量。

(4).LInuxprofile文件在系统启动时将被运行。大家可以在里面加入其他命令,但是一定要正确,不然系统无法启动。

 

6.profile文件的重要性

在UNIX/Xenix系统中有两个对用户而言必不可少的文件——etc目录下的profile文件和用户主目录($HOME)下的.profile文件,前者是系统文件,对系统下全体用户起作用,后者是用户自己的"私人"文件。

这两个文件的功能类似DOS系统下的Autoexec.bat文件,不同之处在于Autoexec.bat文件可以为空,而这两个文件内容不仅不能为空,而且必须存在。他们在用户登录(Login注册)时,被系统自动执行,为用户设置工作环境,若使用得当,可发挥强大作用。

etc目录下的profile文件是每一个用户登录时,操作系统首先执行的文件,然后再将控制
权交给用户主目录下的.profile文件,当系统给出主提示符($PS1)后,用户就可以开始自己的
工作了。以上全过程对用户而言是透明的。
/etc/profile文件的主要功能包括:显示UNIX/Xenix版本信息或者系统专用应用程序的
提示信息,设置掩码(umask),对终端和邮箱(mail box)进行处理,对非root用户禁止使用new
s命令等。
因为/etc/profile文件的作用范围是全体用户,所以非共性的设置应放在用户自己的.p
rofile文件中。下面就详细讲述.profile文件。
.profile是隐含文件,普通的列目录命令(l、ls、lf,ls-l等)显示不出该文件。UNIX/X
enix系统所有隐文件前都有"."符。
显示UNIX/Xenix系统中的隐含文件属性用以下命令:
$l - a
原始的.profile文件是系统管理员使用Sysadmsh命令或mkdev user命令创建用户时,系
统为该用户自动生成的,用户可使用vi编辑该文件为自己所用。.profile文件产生的效用直
至用户退出系统后才消失,而当用户重新登录时,又开始发挥作用。
 
设置终端类型
用户使用UNIX/Xenix系统时可能会遇到这样一个现象:每次登录后,系统会要求用户敲入
终端类型,然后在用户输入相应信息后,才给出提示符。这是为什么呢?
原来在原始.profile文件中有这样一个语句:
eval ‘test -m ansi:ansi -m:${TERM:ansi}-r -s -Q’
该语句的作用是要求用户敲入所使用终端的类型并进行测试。
如果我们在.profile文件中加入以下命令:
TERM=terminal-name
TERM变量指明终端类型。
如:TERM=vt100,并且注释掉eval语句。这样处理以后,用户再注册时,就无需敲入终端类
型了。
 
定义PATH变量
该变量类似于DOS系统的PATH变量,其格式如下:
PATH=$PATH:$HOME/bin:/usr/informix/bin:.
说明:
(1).该语句未尾的"·"表示当前路径,不可缺少;
(2).不同路径间用":"隔开;
(3).$PATH是系统中提供的默认变量,其初始值为/bin:/usr/bin;
(4).路径的顺序是很重要的,前后次序不宜随便颠倒。比如用户自编了一个与系统命
令同名的可执行文件,并将其放在$HOME下,并且打算使用这个命令而不是系统提供的同
名命令,那么PATH应设置为:
PATH=$HOME/bin:$PATH:/usr/informix/bin:.
因为,若不同路径下有相同的命令或可执行文件,则以第一个路径下的为准。这时,SHEL
L先搜索$HOME/bin路径,发现其下的这个可执行文件,就为用户调用,而不会再运行/bin或者
/usr/bin下的标准同名命令了。
 
 
posted on 2018-09-18 12:00  万物拾光  阅读(2323)  评论(0)    收藏  举报