定制AIX操作系统的shell环境
操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。
交互式shell和非交互式shell
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
shell的类型
在UNIX中主要有两大类shell
Bourne shell (包括 sh, ksh, and bash)
Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
C shell (包括 csh and tcsh)
C shell ( csh)
TENEX/TOPS C shell ( tcsh)
Bourne Shell
最初的UNIX shell是由Stephen R. Bourne于20世纪70年代中期在新泽西的AT&T贝尔实验室编写的,这就是Bourne shell。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。
C Shell
Bill Joy于20世纪80年代早期,在Berkeley的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。
Korn Shell
有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命令解释器和命令编程语言.它符合POSIX--一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准--在源程序一级跨越多种平台。
Bourne Again Shell (bash)
bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat, Slackware, Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。
POSIX Shell
POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0 , POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.
各主要操作系统下缺省的shell:
AIX 下是Korn Shell.
Solaris和FreeBSD缺省的是Bourne shell.
HP-UX缺省的是POSIX shell.
Linux是Bourne Again shell.
【TIP】
#!/usr/bin/sh的用途
shell script的第一行一般都是#!/usr/bin/sh或#!/usr/bin/ksh等,它的用途就是指出本脚本是用的哪种shell写的,执行时系统应该用哪种shell来解释执行它。
当你登录时,shell会读取以前设置的初始化文件来设置用户环境。用户环境的定义是通过设置环境变量来实现的。当登录操作系统时,shell主要使用两大类profile文件来定义用户环境。一类是用来为所有用户定制环境,另一类是为个人定义自己的环境。
登录时,shell首先执行/etc/profile文件中的命令,然后运行/etc/environment文件中的命令来设置你的系统环境。这两个文件运行完毕后,系统会接着检查在你的home目录下是否有.profile文件,如果.porfile文件存在,就运行它。 .profile文件还会指出是否还有一个环境文件。如果还有环境文件(通常叫.env或者.kshrc)存在,系统会运行这个文件,并设置你的环境变量。
/etc/profile文件
用户在登录时,操作系统定制用户环境时使用的第一个文件就是/etc/profile。这个文件控制着全系统范围内的缺省变量,如Export变量,文件创建的掩码,终端类型,以及新邮件到达时的提示信息等等。
系统管理员为所有用户配置porfile文件,只有系统管理员可以更改这个文件。
/etc/environment文件
在登录时操作系统使用的第二个文件是/etc/environment。/etc/environment文件包含为所有进程所配置基本环境的变量。当一个新进程开始时,exec子程序生成一个形为Name=Value的字符串数组。这个字符串数组被称为环境,每一个被定义名字被称作环境变量或者 shell变量。exec子程序允许整个环境一次设置完成。
当你登录时,系统在读取你自己的profile前,设置环境文件的环境变量。下面是构成基本环境的变量:
HOME:用户登录的或HOME全路径,登录程序从/etc/passwd文件中读取并设置它。
LANG:语言环境
NLSPATH:消息目录的全路径。
LOCPATH:国际语言支持系统表格的全路径
PATH:搜寻命令的目录
TZ:时区信息 ,IBM到现在还得用TAIST--台北时区
【注意】/etc/environment文件中不能包含命令
.profile文件
操作系统在登录时用到的第三个文件是.profile文件。 .profile文件位于用户的home目录,它允许用户定制自己的个人的工作环境。
在登录程序将LOGNAME和HOME变量添加到环境中后,$HOME/.profile文件中的命令就会被执行,.porfile文件中含有你个人的设置会忽略/etc/profile文件中的相矛盾的变量。
一般用.profile来控制下面的缺省值:
打开的shell,命令行提示符,键盘的声音。
.env文件
如果你在.profile文件中有如下内容:ENV=$HOME/.env,操作系统在用户登录时使用的第四个文件是.env文件。.env文件允许用户定制自己的个人的工作环境。文件中含有的你个人的环境变量会忽略/etc/environment文件中的相矛盾的变量。
【注意】/etc/profile,/etc/environment和.profile文件只在登录时运行一次。但是.env文件却在每一次打开一个新shell或一个窗口时都被执行。
【TIP】$HOME/.env文件名可以任意,但在$HOME/.profile中要有相应的声明:export ENV=$HOME/.NewName
【TIP】$HOME/.env文件每当一个子shell被开启都会被执行,所以可以在这里定义在vi中开启的子shell中也可以使用的别名。
【注意】这四个定制环境的文件中,/etc/enviroment文件中只能给变量赋值,而其它三个文件可以使用语句。
定制AIX操作系统的shell环境的更多相关文章
- AIX系统的环境变量设置
AIX系统的环境变量设置 用户环境的定义是通过设置环境变量来实现的.AIX系统主要使用两大类profile文件来定义用户环境.一类是用来为所有用户定制环境,另一类是为个人定义自己的环境. 登录时,sh ...
- 9. shell环境
• printenv –打印部分或所有的环境变量 • set –设置 shell 选项 • export —导出环境变量,让随后执行的程序知道. • alias –创建命令别名 1.shell环境:s ...
- Cygwin 是一个用于 Windows 的类 UNIX shell 环境
cygwin的安装使用 Cygwin 是一个用于 Windows 的类 UNIX shell 环境. 它由两个组件组成:一个 UNIX API 库,它模拟 UNIX 操作系统提供的许多特性:以及 ...
- AIX 永久修改环境变量
转自:http://blog.sina.com.cn/s/blog_5e3122450100stk5.html 方法一:PATH=$PATH:/usr/XX export PATH重启一 ...
- Linux shell 环境变量及有效范围
每当我们使用ssh客户端远程登陆一个服务时,操作系统就会给我们分配一个新的shell,并且这个shell继承了操作系统的永久环境变量.在当前的shell执行一个sh文件,都会临时产生一个子shell, ...
- windows python3.2 shell环境(python叫做解释器)
[进入python的shell 环境:](python里称作命令解释器,windows叫做cmd,unix叫做shell) cmd 输入set path=%path%;e:\python2.7然后输 ...
- shell环境
1 引言 一个进程运行在shell环境中,理解进程运行的环境是十分重要的.环境影响着进程的行为,利用环境提供的便利,可以极大地提高开发效率.本节深入讨论shell中与进程有关的环境问题,包括命令行参数 ...
- shell 环境变量的相关配置文件和配置方法
shell 环境变量的相关配置文件和配置方法: bash 的配置文件: 全局配置: /etc/profile, /etc/profile.d/*.sh, /etc/bashrc 个人配置 ~/.bas ...
- Linux编程 12 (默认shell环境变量, PATH变量重要讲解)
一 .概述 默认情况下, bash shell会用一些特定的环境变量来定义系统的环境.这些默认环境变量可以理解是上篇所讲的系统全局环境变量. 1.1 bash shell支持的Bourne变量 Bo ...
随机推荐
- 6.5安装nagios
最近因为,科研需要,接触上了Nagios,这里,我将安装笔记做个详解.为自己后续需要和博友们学习! VMware workstation 11 的下载 VMWare Workstation 11的安装 ...
- svn密码 在服务端 到底是明文保存,还是密文保存
svn密码 在服务端 到底是明文保存,还是密文保存 之前在ubuntu上搭建svn服务端,记得密码就是明文保存的, 但最近项目,我们老大说,他搭建的是加密后的,我就比较纳闷了, 经过偷偷的瞄一下,不就 ...
- 学习lofter 让图片适应各个分辨率的方法
只要图片的分辨率足够大,那么可以任意的width,不用担心失真 那么就可以根据屏幕的分辨率给图片相应的宽度 大分辨率浏览 小分辨率浏览 两个分辨率的图片地址是一样的,排除了换图的可能 大分辨率下的代码 ...
- Asp.net在页面间传递大量数据(数据表)建议采用的方法
能让数据在 两个不同站点之间传递吗? 我现在是想A站点的数据 传递到B站点....... 建议使用Cache (1)不太影响程序性能不太可能,你都说了,是大量数据.我举个例子,你是从A.aspx传到B ...
- urllib基本使用 urlopen(),Request
urllib包含的常用模块:import urllib.request # 打开和读取url请求import urllib.error # 异常处理模块import urllib.parse # ur ...
- C#实现按键精灵的'找图' '找色' '找字'的功能
http://www.cnblogs.com/JimmyBright/p/4355862.html 背景:游戏辅助功能通常使用按键精灵编写脚本,按键精灵的最大卖点就是能够找到画面中字,图,色,这对于模 ...
- 解决ios8 webView加载的地图无法定位问题
本文转载至http://www.cocoachina.com/bbs/read.php?tid-237825.html 1.在文件info.pilist 中导入 NSLocationWhenI ...
- Python抓取网页并保存为PDF
https://blog.csdn.net/shenwanjiang111/article/details/67634794
- Digit Division
Digit Division Time limit: 1 s Memory limit: 512 MiB We are given a sequence of n decimal digits. Th ...
- qt sql 模块有哪些类?
Class Description translate.google QSqlDatabase Handles a connection to a database 处理与数据库的连接 QSqlDri ...