第十三章  登陆环境

登陆系统时。输入username和password后。假设验证通过。则进入登录环境。



登录过程

文件/etc/passwd

$HOME.profile

定制$HOME.profile



/etc/passwd 文件解析(抽取当中的一行作为演示样例):

  1             2       3       4         5               6                7
root: x: 0: 0: root: /root: /bin/bash
第 1 域 : 登录名
第 2 域 : 加密后的password
第 3 域 : 用户标识号(用于系统内部区分用户,假设多个用户相应的用户标识号一样。系统觉得他们是同一个用户,但能够有不同的口令,不同的主文件夹以及不同的登陆shell)
第 4 域 : 组标识号(标识用户所属的组,他相应/etc/group 中的一条记录)
第 5 域 : 用户全名
第 6 域 : 用户根文件夹
第 7 域 : 用户默认的shell

登陆成功后,系统运行两个环境设置文件:/etc/profile 和  用户根文件夹下  .profile



/etc/profile 

该文件包括:

1、全局或局部环境变量

2、PATH 信息

3、终端设置

4、安全命令

5、日期信息或放弃操作信息

stty : stty 用于设置终端特性。



logout文件(在ubuntu 12.04中 为用户根文件夹下的  .bash_logout  文件):

此文件保存有运行e x i t命令时,在进程终止前运行的命令。



第十四章   环境和shell变量

shell 变量

环境变量

变量替换

导出变量

特定变量

向脚本传递信息

在系统命令行下使用位置參数



shell 变量:shell 变量用一个 “有效的”字符串表示,用于暂存信息。

本地变量:  本地变量在用户如今的shell生命周期的脚本中使用,用户不能在其它shell或进程设置此变量有效。

变量的各种设置模式:

Va r i a b l e - n a m e = v a l u e设置实际值到v a r i a b l e - n a m e

Va r i a b l e - n a m e + v a l u e 假设设置了v a r i a b l e - n a m e,则重设其值

Va r i a b l e - n a m e : ?

v a l u e 假设未设置v a r i a b l e - n a m e,显示没有定义用户错误信息

Va r i a b l e - n a m e ?

v a l u e 假设未设置v a r i a b l e - n a m e,显示系统错误信息

Va r i a b l e - n a m e : = v a l u e 假设未设置v a r i a b l e - n a m e。设置其值

Va r i a b l e - n a m e : - v a l u e 同上。可是取值并不设置到v a r i a b l e - n a m e,能够被替换

清除变量:unset   variable-name

显示全部变量:   set     (readonly 显示全部的仅仅读变量)

连接变量值:   ${var1}${var2}${var3}${...}  (将变量并排就能够实现变量结合在一起)

測试变量是否已经赋值:   var1:-newValue  (假设var1 已经赋值则使用原来的值,否则用newValue作为新的值,可是newValue并没有赋值给var1)

设置仅仅读变量。格式:

variable-name = value
readonly variable-name



环境变量

环境变量用于全部用户进程。

环境变量能够在命令行中设置,但用户注销时这些值将丢失,因此最好在. p r o f i l e文件里定义。

环境变量应用于用户进程前,必须用e x p o r t命令导出。环境变量与本地变量设置方式同样。



环境变量设置  var=value:export var   或

var = value
export var

显示环境变量和显示本地变量一致,使用${var} ,

查看全部的环境变量: env

清除环境变量: unset var  (跟清除本地变量一致)



嵌入shell变量

linux预留的环境变量。通常在/etc/profile中建立这些嵌入变量。

CDPATH:cd 一个文件夹时先查找这个变量,假设存在则此文件夹成为当前文件夹。

EXINIT:保存使用vi编辑器时的初始化选项。

HOME:保存用户根文件夹,使用cd直接进入该文件夹

IFS:指定shell默认域分隔符(能够指定多个域分隔符)

LOGNAME:保存登录名

MAIL:保存邮箱路径名

MAILCHECK:邮箱检測频率(/s)。默认是60秒。

PATH:保存命令或脚本查找的文件夹顺序(频繁-->一般-->不经常使用)

PS1:基本提示符(包括shell提示符),默认root为  # 。 其它用户为  $

PS2:附属提示符,多用于多余一行的命令

SHELL:保存默认shell,通常在/etc/profile中配置

TERMINFO:保存终端配置文件位置。

TERM:保存终端类型。

TZ:保存时区值。

一下环境变量没有提供默认值(上面的环境变量中某些在ubuntu12.04中也没有提供默认值)

EDITOR:设置默认编辑器

PWD:当前文件夹名

PAGER:保存屏幕翻页命令

MANPATH:保存系统中man文件的文件夹

LPDEST  或 PRINTER: 默认打印机名



导出变量

使用 export 导出变量后。子进程就能够 “看得见”该变量。



位置变量(位置变量參数),仅仅读的

使用位置变量參数能够想shell脚本传递信息。该參数能够为随意多,可是仅仅有前面 9 个能够被訪问

$ 0$ 1$ 2$ 3
$ 4$ 5
$ 6$ 7
$ 8$ 9  ($0为脚本名字,其余为參数)



特定变量,仅仅读的

特定变量表:

$ #		传递到脚本的參数个数
$ * 以一个单字符串显示全部向脚本传递的參数。与位置变量不同,此选项參数可超过9个
$ $ 脚本执行的当前进程I D号
$ ! 后台执行的最后一个进程的进程I D号
$ @ 与$ #同样。可是使用时加引號,并在引號中返回每一个參数
$ - 显示s h e l l使用的当前选项,与s e t命令功能同样
$ ? 显示最后命令的退出状态。0表示没有错误,其它不论什么值表明有错误

第十五章     引號

双引號可引用除字符$、`、\外的随意字符或字符串。

单引號与双引號类似,不同的是假设屏蔽了其特殊含义时,会将单引號和其内部的值作为一个新的字符串。

BOy=‘boy’
echo "like '$BOY'"
echo "like "$BOY""

两个echo 输出的内容是不一样的,前面的echo 多了 一对单引號。



反引號:shell 将 反引號括起来的  内容  作为系统命令,并运行。

反斜线:反斜线用于屏蔽特殊字符的特殊意义。

Linux Unix shell 编程指南学习笔记(第三部分)的更多相关文章

  1. Linux Unix shell 编程指南学习笔记(第五部分)

    第二十五章 深入讨论 << 当shell 看到 << 的时候,它知道下一个词是一个分界符.该分界符后面的内容都被当做输入,直到shell又看到该分界符(位于单独的一行).比方: ...

  2. Linux Unix shell 编程指南学习笔记(第四部分)

    第十六章  shell脚本介绍 此章节内容较为简单,跳过. 第十七章   条件測试 test命令 expr命令 test  格式  test  condition     或者  [ conditio ...

  3. Linux Unix shell 编程指南学习笔记(第二部分)

    第七章  正則表達式介绍 匹配行首与行尾 匹配数据集 职匹配字母和数字 句点 "." 匹配随意单字符. ^,在行首 匹配字符串或字符序列,如查询当前文件夹下的全部文件夹: ls - ...

  4. Linux 与 unix shell编程指南——学习笔记

    第一章    文件安全与权限 文件访问方式:读,写,执行.     针对用户:文件属主,同组用户,其它用户.     文件权限位最前面的字符代表文件类型,常用的如         d 目录:l 符号链 ...

  5. Linux与Unix shell编程指南(完整高清版).pdf

    找到一本很详细的Linux Shell脚本教程,其实里面不光讲了Shell脚本编程,还介绍了系统的各种命令 http://vdisk.weibo.com/s/yVBlEojGMQMpv 本书共分五部分 ...

  6. maven权威指南学习笔记(三)——一个简单的maven项目

    目标: 对构建生命周期 (build  lifecycle),Maven仓库 (repositories),依赖管理 (dependency management)和项目对象模型 (Project O ...

  7. maven 一个简单项目 —— maven权威指南学习笔记(三)

    目标: 对构建生命周期 (build  lifecycle),Maven仓库 (repositories),依赖管理 (dependency management)和项目对象模型 (Project O ...

  8. 摘自《Linux与unix shell编程指南》

    shift运行后,$#随之减少:如果需要知道命令行中输入的最后一个参数(通常是一个文件名),可以有两种选择:使用命令 eval echo \$$#;使用shift命令:shift 'expr $# - ...

  9. Linux与unix shell编程指南

    第14章 环境和shell变量 1.使用变量时,尽量用花括号将之括起来,防止shell误解变量值. 2.设置变量时的不同模式 variable-name=value 设置实际值到variable-na ...

随机推荐

  1. win7浏览器出现无法连接到代理服务器错误解决办法

    今天早上打开电脑浏览器显示无法连接到代理服务器 解决办法: 1.Google浏览器 2.打开设置->高级设置->打开代理服务器->局域网设置,把对勾去掉 3.点击确定,关闭浏览器重新 ...

  2. 【POJ 3090】 Visible Lattice Points

    [题目链接] http://poj.org/problem?id=3090 [算法] 通过观察发现,在这个平面直角坐标系中,除了(1,1),(1,0)和(0,1),所有可见点的横纵坐标互质 那么,问题 ...

  3. JS 中构造函数和普通函数的区别(详)

    1.构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写 2.构造函数和普通函数的区别在于:调用方式不一样.作用也不一样(构造函数用来新建实例对象) 3.调用方式不一样. 普通 ...

  4. 【读书笔记】UEFI原理与编程(1)概述及开发环境的搭建

    一.概述: 0.为什么会有这篇文章 说实在的,在2016初的时候,我就萌生了写一个操作系统的念头,但是这对于我一个菜鸟来说,犹如登天. 既然想了就去写,即使最后做不完,也不后悔. 抱着这样的念头,我开 ...

  5. django URL多层路由

    一.多层路由 如果django里的app数量越来越多,那项目里的urls文件配置起来将会很麻烦,而且也不利于后续项目的改动和整理 所以看了杨老师的视频https://www.bilibili.com/ ...

  6. css round corner div and transition

    看stackoverflow上的圆角标签挺好看,自己动手试了下,用的属性是border-radius(即边框圆角半径,用px):加上transition effect,代码如下: <!DOCTY ...

  7. linux+nginx+python+django环境配置

    Django是一个开放源代码的Web应用框架,由Python写成,它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的.python+django也是web开发者最受欢迎的框架.今天 ...

  8. 【技术累积】【点】【java】【3】编译和反编译

    闲聊 擦,打脸了,但打完了还是得继续写呗,水着水着看呗. 概述 理解的不深入,但是实用. 总而言之:编译,是将书写的代码翻译为机器能够理解的代码:反编译,则是相反的过程. 来源在于语言的等级,一般认为 ...

  9. C# dataGridView1 添加数据 和清空数据

    #region MyRegion DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn(); DataGridViewTextBo ...

  10. spring cloud(三) config

    spring cloud 配置中心 config 搭建过程 1.搭建config-server 服务端 1.1. 新建boot工程 pom引入依赖 <!-- config配置中心 --> ...