11 环境
登录系统后,实际上被分配了一份shell程序的副本,该shell维护着你的环境--一个区别于系统中其他用户的环境。
从登录入系统的那一刻起,这个环境就被维护着,知道你从系统注销为止。
export variables
其中variables是你希望导出的变量名的清单,对从这一个以后执行的所有
子shell,这些导出的变量的值都会传递给它们。
子shell甚至不能改变导出变量的值,它只不过是改变了y的副本的值,
该副本是在程序执行时传递给子shell环境的。就跟局部变量一样,子shell结束时,
导出变量的值也丢失了。子shell中没有办法改变父shell中的变量。
shell用来作为命令提示符显示的字符存在变量PS1中,可以把这个变量改变成
任何字符。辅助命令提示符存在变量PS2中。
它们跟其他shell变量一样,要想永久性的修改,可以把它加入.profile文件,自动进行改动。
使用echo $PS1 $PS2可显示这两个变量。
每次登录系统后所处的目录称为宿主目录。有一个特殊的变量名叫HOME.
使用 echo $HOME可显示宿主目录。
每当键入要执行的程序名时,shell就从一连串的目录中搜索,直到找到要求的程序为止。
如果找到,就启动运行。这一连串目录的清单存在一个特殊的shell变量PATH中。
.:/bin:/usr/bin和:/bin:/usr/bin是等价的,指明当前目录的点是可选的。不建议将点放在最前面,
为了防止特洛伊木马。
随时可以给要执行的程序指定路径,这样可以覆盖PATH的作用。
例如,如果键入/bin/date,shell就会直接在/bin目录中执行date,在这
种情况下,PATH的值被忽略,就跟键入../bin/lu(退出当前目录进入bin)或者./rolo一样。
后一种情形是要在当前目录中执行rolo程序。
CDPATH变量跟PATH变量相似:它给出一系列目录,每当shell执行cd命令时,shell就在其中
搜索。只有当参数给出目录不是完全路径名并且CDPATH的值不为空时才进行这种搜索。
shell有个内部命令称作.,它的一般格式是:
.file
它的作用是在当前shell中运行file的内容,也就是由当前shell来执行file
中的命令,就像在那个位置直接键入它们一样,不产生子shell来执行这些程序。
shell用PATH变量来查找file,就跟执行其他程序一样。
假如有一个程序名为db,它包含以下命令:
$cat db
DATA=/usr2/data
RPTs=$DATA/rpts
BIN=$DATA/bin
cd $DATA
如果你是那种需要支持一些不同目录层次结构的Unix用户,可以创建像db这样的程序,
每当要在其中一个目录中工作时,就执行一个这样的程序。在那个程序中,还可以定义
其他变量:例如:你可能想改变PS1中的提示符,比如改成DB--这样可以让你知道数据库
的变量已经建立了;你也可能希望改变PATH,把包含跟数据库有关的程序的目录加入进去,
以及改变CDPATH变量,以便方便地用cd命令存取数据库的目录;
甚至可以改变HOME,这样只要用cd命令,不用参数就可以直接转到数据库目录。
如果做了这样的修改,你可能会希望在子shell中运行db,而不是在当前shell中,
因为如果在当前shell中运行的话,有关数据库的工作完成后,这些变量仍然保留着。
正确处理的诀窍是从子shell中启动一个新shell,将所有修改过的变量导出给它,与数据库
相关的工作结束后,按Ctrl+d从这个新shell中注销。
$cat db
#Set up and export variables related to the data base
HOME=usr2/data
DATA=/usr2/data
RPTS=$DATA/rpts
BIN=$DATA/bin
PATH=$PATH$BIN
CDPATH=:$HOME:$RPTS
PS1="DB: "
export HOME BIN RPTS DATA PATH CDPATH PS1
#Start up a new shell
/usr/bin/sh
$
首先把宿主目录设为usr2/data,然后相对于宿主目录定义变量
BIN,RPTS,DATA(在需要把目录结构移到别处的情况下,这样做
是个最好的办法,程序中惟一需要修改的就是HOME变量)。
接着,修改PATH变量,将数据库的bin目录包含进去:设置CDPATH目录,
使它包含当前目录,宿主目录和RPTS目录。
导出这些变量之后(把这些变量导入以后产生的子shell的环境中必须这样做),
就启动标准shell,/usr/bin/sh,从这一时刻起,就由新shell处理终端
键入的命令。向该shell键入Ctrl+d后,控制返回到db,接着控制又返回到登录shell。
$db 运行
DB: echo $HOME
usr2/data
DB: Ctrl+d
$ echo $HOME
/users/steve 返回到正常状态
$
-----------------------------------------------------
exec命令
可以把一系列命令用小括号或大括号括起来,使他们组成一组。
前一种形式用子shell执行这些命令,后一种形式则在当前shell
中执行。
如果大括号中括的命令要打在同一行,左括号后必须有一个空格。
给子shell传递变量的另一种方法
在命令行中,可以在命令名之前给任意多个变量赋值。
分享到:
相关推荐
《第11章环境保护的国际合作》探讨了自20世纪70年代以来,随着全球环境运动的兴起,人们对环境保护的认识不断加深,意识到环境问题是全人类共同面临的挑战,不受国界、社会制度或意识形态的限制。国际合作成为了保护...
第11章主要探讨的是多线程编程,这是现代操作系统中一个重要的并发执行机制。 在提供的压缩包文件中,我们可以找到以下几个关键部分: 1. **include**:这个目录可能包含了与多线程编程相关的头文件。在Unix系统中...
11第11章软件工程环境电子教案.pptx
第11章电子商务环境.pptx
第11章网络环境下数据共享操作.pptx
第11章 运行的方向 第12章 屏幕坐标 第13章 鼠标事件处理 第14章 脚本的运行 第15章 预制体 第16章 (练习) 子弹发射 第17章 物理系统 第18章 碰撞检测 第19章 (练习)飞机大战 第20章 音频播放 第21章 延时...
第11章 运行的方向 第12章 屏幕坐标 第13章 鼠标事件处理 第14章 脚本的运行 第15章 预制体 第16章 (练习) 子弹发射 第17章 物理系统 第18章 碰撞检测 第19章 (练习)飞机大战 第20章 音频播放 第21章 延时...
资料目录.bat 环境数据处理与数学模型课件 01-课程介绍.ppt ...环境数据处理与数学模型课件 11-环境质量基本模型.ppt 环境数据处理与数学模型课件 12-河流模型.ppt 环境数据处理与数学模型课件 13-湖泊模型.ppt
软件工程环境电子教案 软件工程环境是指支持软件产品开发、维护和管理的软件系统,它在统一的集成机制下由一系列软件工具组成。软件工程环境的主要特点包括集成化的软件工具、友善和统一的用户界面、过程集成、平台...
第11章 MATLAB图形用户界面设计.ppt 第10章 MATLAB图形句柄.ppt 第9章 MATLAB符号计算.ppt 第8章 MATLAB数值积分与微分.ppt ...
在"Unix环境高级编程11-20章"中,我们深入探讨了Unix操作系统的核心概念和技术,特别是关于I/O操作、进程间通信以及数据库开发的关键知识点。这些章节涵盖了Unix系统编程的重要方面,对于任何想要深入理解和开发Unix...
C程序设计语言 揣锦华 第11章 Visual C环境下Windo.pptx
9. **网络编程基础**:虽然标题仅提及前11章,但通常网络编程会在后续章节出现。不过,了解Unix环境下的基本网络概念和套接字API也是系统编程的一部分。 10. **时间与定时器**:涵盖Unix的时间表示、时间操作函数,...
#### 第11章:Keil C51开发环境 本章主要介绍如何使用Keil C51开发环境进行项目的创建、编译和调试,重点在于掌握Keil C51的基本操作流程和技术要点,帮助读者能够独立完成简单的单片机应用程序设计。 ### Keil ...
第11章人体内的废物排入环境复习教案.docx
### 第11章-45度角瓷砖地图(Isometric Tilemaps) #### 一、45度角瓷砖地图的概念 45度角瓷砖地图(Isometric Tilemaps)是一种利用2D图形来模拟3D环境的技术,广泛应用于游戏开发之中。相较于传统的3D渲染,这种技术...