一、环境

shell在环境中存储了两种数据类型:环境变量(environment variables )shell变量(shell variables).在shell中这两种变量基本没有什么不同。

此外shell还存放一些变成数据(programmatic data),分别是aliase和shell functions.

为了看环境中存储的东西:我们使用set和printenv程序来观察。set会显示shell和environment中的变量。printenv只会显示环境中的变量。

 [me@linuxbox ~]$ printenv | less

显示了一系列环境变量及其对应值,我们也可以使用pritenv观察某个特定变量的值。

 [me@linuxbox ~]$ printenv USER
me
 [me@linuxbox ~]$ set | less
 [me@linuxbox ~]$ echo $HOME
/home/me

alias需要使用alias显示

 [me@linuxbox ~]$ alias
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --showdot
--show-tilde'

部分环境变量如下图所示:


二、环境建立过程

当我们登录系统时,bash程序启动,从启动文件里读取一系列配置脚本。配置脚本里有所有用户的默认环境配置。

shell会话类型有两种,它决定了启动文件的执行顺序。

login shell:提示我们输入用户名和密码,例如虚拟控制台会话。

non-login shell:大多发生在我们使用GUI启动终端。

在读取以上启动文件之后,non-login shell还会继承父类进程的环境,通常是一个login shell。

由于大部分启动文件以“.”开头,意味着他们是隐藏的,所以在使用ls查看时要加上-a。

~./bashrc是一个最重要的启动文件。

我们来看下启动文件中有什么?

 # .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH

其中三、四行翻译如下:

 If the file "~/.bashrc" exists, then
read the "~/.bashrc" file.

以上启动文件中的另一个重要因素是PATH变量。当用户输入ls,shell不会搜索整个系统来寻找/bin/ls(ls命令的完整路径名)而是会搜索

PATH变量中存储的目录列表。PATH变量通常是由启动文件/etc/profile中的一段代码设定。

 PATH=$PATH:$HOME/bin

以上代码是利用参数扩展将$HOME/bin添加到PATH值的尾部。当系统需要检索用户输入的命令时,$HOME/bin这个路径会处于被搜索的路径列表之中。

 export PATH

以上命令告诉shell子进程也可以使用PATH变量的内容。


三、修改环境

在PATH中添加变量或者定义另外的环境变量,是在.bash_profile(ubuntu是在.profile)中修改。其他的修改是在.bashrc中。


 [me@linuxbox ~]$ printenv | less

The linux command之环境的更多相关文章

  1. 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令

    Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...

  2. Linux里设置环境变量的方法(export PATH)

    1.动态库路径的设置 Linux下调用动态库和windows不一样.linux 可执行程序是靠配置文件去读取路径的,因此有些时候需要设置路径 具体操作如下 export LD_LIBRARY_PATH ...

  3. linux 下PATH环境变量

    环境变量简介 什么是环境变量呢?简要的说,就是指定一个目录,运行软件的时候,相关的程序将会按照该目录寻找相关文件. 在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现&quo ...

  4. 环境变量解释以及在Linux下的环境变量设置

    一.环境变量解释 环境变量是什么? 引用百度百科里面的解释:环境变量是操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.例如Windows系统中的path环境变量,当要求 ...

  5. linux 、 CentOs ---> 环境变量设置

    Linux下环境变量设置 1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错 ...

  6. Linux Command Backup

    User Structure linux command review 列出所有信号 找到名字后,kill 或者用ps找到 kill同名进程 每隔一秒高亮显示网络链接数的变化情况 启动关闭制定网卡 关 ...

  7. Ubuntu,CenOS等Linux系统更改环境变量方法,以安装anaconda为例

    [环境配置的原因] 在windows系统下,很多软件的安装都需要设置环境变量,比如安装JAVA JDK.如果不安装环境变量,在非软件安装的目录下运行javac命令,将会报告"找不到文件&qu ...

  8. Linux 14.04lts 环境下搭建交叉编译环境arm-linux-gcc-4.5.1

    交叉编译工具链是为了编译.链接.处理和调试跨平台体系结构的程序代码,在该环境下编译出嵌入式Linux系统所需要的操作系统.应用程序等,然后再上传到目标板上. 首 先要明确gcc 和arm-linux- ...

  9. linux配置java环境变量(详细)

    linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...

随机推荐

  1. 【Java多线程系列五】列表类

    一些列表类及其特性  类 线程安全 Iterator 特性 说明 Vector 是 fail-fast 内部方法用synchronized修饰,因此执行效率较低 1. 线程安全的列表类并不意味着调用它 ...

  2. js关于if()else{}中的判定条件的认识,各种数据类型转换为Boolean类型的转换规则

    博客搬迁,给你带来的不便敬请谅解! http://www.suanliutudousi.com/2017/09/24/js%E5%85%B3%E4%BA%8Eifelse%E4%B8%AD%E7%9A ...

  3. JavaScript中的面向对象编程,详解原型对象及prototype,constructor,proto,内含面向对象编程详细案例(烟花案例)

    面向对象编程:   面向:以什么为主,基于什么模式 对象:由键值对组成,可以用来描述事物,存储数据的一种数据格式 编程:使用代码解决需求   面向过程编程:         按照我们分析好的步骤,按步 ...

  4. Java SE(3)

    紧接着上一期内容,继续来复习一下java基础的知识点,主要来复习一下有关线程的内容吧! 1.向上转型:Animal a = new Cat();//自动类型提升,猫对象提升为动物类型,但是特有的功能无 ...

  5. PHP算法之有效的括号

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字符串可被认为是 ...

  6. nodejs route的简单使用

    demo var express=require('express'); var app=express(); var routeUser=express.Router(); var routeTea ...

  7. 关于CheckListBox触发ItemCheck事件的问题

    开发时遇到一个有趣的问题,我们需要CheckListBox可以实现单选功能,因为默认是多选的,开始我写的代码如下: void cb_ItemCheck(object sender,ItemCheckE ...

  8. 依赖背包变形——poj1947(经典)

    /*这题显然不适用依赖背包的优化,因为不能保证根是必选的,但是可以按照常规依赖背包的思路进行转移,即每次对一个儿子进行C^2的转移 还是树形的背包,dp[u][j]表示u的子树里,切割出一个大小为j的 ...

  9. 2018-2019-2-20175323 java实验四 Android程序设计

    (一)安装及配置Andriod Studio,执行HelloWorld 我选择的安装网址下载了3.2.0版本的Andriod Studio 此处应该选择cancel 报错 点击所给链接,安装相应SDK ...

  10. Python 爬虫-抓取中小企业股份转让系统公司公告的链接并下载

    系统运行系统:MAC 用到的python库:selenium.phantomjs等 由于中小企业股份转让系统网页使用了javasvript,无法用传统的requests.BeautifulSoup库获 ...