`

/etc/profile与/etc /enviroment的比较 UBUNTU四种环境变量的简介

 
阅读更多

先将export LANG=zh_CN加入/etc/profile ,退出系统重新登录,登录提示显示英文。将/etc/profile 中的export LANG=zh_CN删除,将LNAG=zh_CN加入/etc/environment,退出系统重新登录,登录提示显示中文。

用 户环境建立的过程中总是先执行/etc/profile然后在读取/etc/environment。为什么会有如上所叙的不同呢

应该 是先执行/etc/environment,后执行/etc/profile。

/etc/environment是设置整个系统的环境, 而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。

系统应用程序的执行与用户环境可以是无关 的,但与系统环境是相关的,

所以当你登录时,你看到的提示信息,象日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,如 果系统环境LANG=zh_CN,则提示信息是中文的,否则是英文的。

对于用户的SHELL初始化而言是先执行/etc/profile, 再读取文件/etc/environment.

对整个系统而言是先执行/etc/environment。这样理解正确吗

/etc/enviroment --> /etc/profile --> $HOME/.pro

file -->$HOME/.env (如果存在)

/etc/profile 是所有用户的环境变量

/etc/enviroment是系统的环境变量

登陆系统时shell读取的顺序应该是

/etc/profile ->/etc/enviroment -->$HOME/.profile -->$HOME/.env

原 因应该是jtw所说的用户环境和系统环境的区别了

如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment) 有不同的值那应该是以用户环境为准了。

(1)/etc/profile: 此文件为系统的每个用户 设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。

(2)/etc /bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。

(3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己 使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户 的.bashrc文件。

(4)~/.bashrc: 该文件包含专用于你 的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

(5) ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可 以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关 系。

(6)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

通过比较最后发现,在ubuntu下配置java运行环境时,所做的设置代表的意 义了。

$ sudo vim /etc/profile

在文件最后添加

#set java environment

JAVA_HOME=/opt/jdk1.6.0_07

export JRE_HOME=/opt/jdk1.6.0_07/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

最后wq!

备注:在shell中执行 程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。
###################################################################

在登录Linux时要执行文件的过程如下:
在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。因为在 ~/.bash_profile文件中一般会有下面的代码:

if [ -f ~/.bashrc ] ; then
 . ./bashrc
           fi
  ~/.bashrc中,一般还会有以下代码:
if [ -f /etc/bashrc ] ; then
 . /bashrc
fi

所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。

执行顺序为:/etc /profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout


#################################################################

1.登录shell
所谓登录shell,指的是当用户登录系统时所取的那个 shell。登录shell属于交互式shell。

登录shell将查找4个不同的启动文件来处理其中的命令。 bash shell处理文件的顺序如下:
1: /etc/profile

2:/etc/profile.d等待配置文件

3: $HOME/.bash_profile

4: $HOME/.bash_login
5$HOME/.profile
/etc /profile是bash shell在系统上的主默认启动文 件,系统上 每一个用户在登陆时都将执行此文件。
通过设置这个文件,
超级用户可以为全系统内的所有bash用户建立默 认特征。不同 Linux版本在此文件放置的命令不尽相同,
在redflag中,该文件设置了几个重要的变 量,
如:PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC,详情可以查看具体的文件。

其余3个文件具备相同的功能——提供特定于用户的启动文件。大多 数Linux版本只使用其中之一。如:RedFlag使用.bash_profile ubuntu使用.profile .
shell 依次查找~/.bash_profile、
~/.bash_login、
~/.profile(~是用户主目录的速记 符),
并执行它找到的首个文件中的命令。
可以将命令放置在这些文件中以覆盖掉/etc /profile文件中的默认设置。
也就是后面的文件可以覆盖或者修改前面的设置
2. 交互式非登录shell
如果启动 了一个bash shell而没有等录系统(如在CLI提示符中键入bash),
则启动了一个交互式非登录shell.
而登录shell的初始化文件(比如.bash_profile)通常会运行这个文件。这样, 登录shell和非登录shell都可以使用.bashrc中的命令。
如以X Window环境登录Linux时,在X环境所起动的终端,那些shell都是非登录shell.
在交互式非登录shell中并不执行前面提到 的初始化文件中的命令。然而,交互式非登录shell从登录shell继承了由这些初始化文件设置的 shell变量。
(1) $HOME/.bashrc
交互式非登录shell执 行~/.bashrc文件中的命令.在每次执行shell脚本时,都会重新读取这个文件,所以是最完整的。

但是万事都不是一样的,debain系列 的是不同的,如ubuntu
/etc/profile-->/etc/environment-->$HOME/.profile

Ubuntu Linux系统环境变量配置文件介绍在Ubuntu中有如下几个文件可以设置环境变量

/etc/profile:在登录时,操作系 统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。

/etc /environment:在登录时操作系统使用的第二个文件, 系统在读取你自己的profile前,设置环境文件的环境变量。

~/.profile: 在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认 情况下,他设置一些环境变量,执行用户的.bashrc文件。

/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
分享到:
评论

相关推荐

    Ubuntu的安装文档

    "enviroment"文件可能是指环境变量的设置,通常位于 `/etc/environment` 或者用户的 `.bashrc` 文件。这些变量影响程序的运行环境,比如PATH变量决定命令的搜索路径。通过编辑这些文件,可以定制个性化的工作环境。...

    JAVA_SET_enviroment

    标题“JAVA_SET_enviroment”暗示了我们讨论的主题与设置Java开发环境有关,特别是关于配置Java环境变量的步骤。在编程领域,尤其是Java开发中,正确地设置环境变量是至关重要的,因为它们指定了系统如何找到并执行...

    Laravel开发-local-enviroment

    "Laravel开发-local-enviroment" 提供了一种便捷的方法来创建和管理本地开发环境,使得开发者可以在自己的机器上搭建与生产环境相似的环境,确保代码在本地测试时的稳定性和兼容性。下面我们将深入探讨这个主题。 1...

    Environment variable ORACLE_UNQNAME not defined错误解决

    - **方法二**:在用户的`.bash_profile`或`.bashrc`文件中永久添加环境变量设置。 ```bash echo 'export ORACLE_UNQNAME=<数据库唯一名称>' >> ~/.bash_profile source ~/.bash_profile ``` 或者 ```bash ...

    Enviro - Dynamic Enviroment.zip

    Enviro - Dynamic Environment 是一款专为Unity开发设计的环境插件,它提供了丰富的环境设置功能,使得游戏开发者能够轻松创建出各种逼真的天气效果。这款插件的核心特性在于其高度的灵活性和可定制性,允许用户在...

    python访问系统环境变量的方法

    本文实例讲述了python访问系统环境变量的方法。分享给大家供大家参考。具体如下: #-------------------------------- # Name: enviroment_variables.py # Author: Kevin Harris # Last Modified: 02/13/04 # ...

    openhab-syno-spk:openHAB Synology SPK安装软件包

    为您的软件包准备一个目录,例如: /var/packages/Java11编辑/etc/profile以JAVA_HOME properly更新JAVA_HOME properly #PATH=$PATH:/var/packages/Java8/target/j2sdk-image/bin # Synology Java runtime ...

    Use Node.js as a full cloud enviroment development stack

    ### 使用Node.js作为完整的云端开发环境 随着技术的飞速发展与创新,新的想法和技术不断涌现,其中Server-side JavaScript就是一种极具潜力的概念。Node.js作为一种为版本8 JavaScript引擎设计的事件驱动I/O框架,...

    backup_aws_s3

    BackupAwsS3 将s3文件夹备份到另一个s3 安装 $ gem install backup_aws_s3 ...在/ etc / enviroment中创建环境变量 export S3_BUCKET_BACKUP="xxxxxxxxxxx" export S3_ACCESS_KEY_ID="xxxxxxxxxxx" export S3_SE

    达芬奇DM6446—源码剖析过程

    UBOOT的环境变量存储结构定义在/include/enviroment.h中,环境变量存储在FLASH中的位置是由include/configs/smdk6410.h文件中的CFG_ENV_OFFSET宏定义指定的,通常这些环境变量位于UBOOT代码之后的FLASH区域,以防止...

    Bluetooth enviroment monitor.rar_DA14580上的环境监测程序_sensors_传感器_光敏传

    标题中的“Bluetooth enviroment monitor.rar”表明这是一个与蓝牙相关的环境监测程序,它可能是通过蓝牙技术来收集和传输数据的。DA14580是一个智能蓝牙微控制器,由Dialog Semiconductor公司生产,常用于低功耗...

    build_enviroment.tar.xz

    build_enviroment.tar.xz

    OpenGL_Tutorial_Enviroment.zip

    OpenGL教程环境资源包 OpenGL(Open Graphics Library)是一种跨语言、跨平台的应用程序编程接口(API),用于渲染2D、3D矢量图形。它在计算机图形学领域有着广泛的应用,尤其是在游戏开发、科学可视化、虚拟现实等...

    Unity Trees Grass & Rocks Enviroment Pack v1.0

    这个完整的环境包是你一直在寻找的创造你的自然环境包包括树木,大岩石,岩石,小岩石,草,灌木,蕨类植物等… 所有纹理均为TARGA和PNG格式,分辨率为256/512/1024/2048/4096。型号10~20000 Tris之间的Polycount...

    advance programming in unix enviroment 2e and its code

    10. **程序启动和终止**:解释程序的执行过程,如环境变量、启动脚本、启动参数、退出状态等。 随书源代码(apue.2e.code)包含了书中所有示例的实现,这为读者提供了一个实践和学习的平台,通过阅读和运行这些代码...

    jdk1.5-jar package

    这个标题指的是一个与Java Development Kit(JDK)1.5版本相关的归档文件,特别是涉及到`jar`打包工具。在Java编程环境中,`jar`文件是用于存储类文件、资源和其他元数据的压缩格式,它允许将多个文件组合成一个单一...

    Introduction to the Matlab Programming Enviroment.pdf

    MATLAB,全称为矩阵实验室(Matrix Laboratory),是一个强大的交互式编程环境,专为解决各种计算问题而设计。从处理传感器的原始数据到物理应用,如计算流体力学(CFD)和有限元方法(FEM),再到数据可视化,如...

    react-multi-clamp:简单,高效且易于使用的多行文本钳制React组件。 (支持反向夹)

    react-multi-clamp Simple, efficient and easy-to-use multiline text clamp react component....Supports IE9+ / Android4.4+ / etc. ES5 enviroment. 支持PC/移动设备所有兼容ES5环境的浏览器。 Installation You

Global site tag (gtag.js) - Google Analytics