1 确定登录 Shell
命令 echo $SHELL 回显用户登录时输入的 shell 文件名
$ echo $SHELL
/usr/bin/sh.
echo 命令可以显示 SHELL 变量的内容或值SHELL 变量包含运行的 shell 程序的
文件名在本示例中文件名为 /usr/bin/sh 该文件包含了 POSIX Shell 代码
下表列出了每个 shell 的文件名和缺省的系统提示符每个 shell 的超级用户
提示符为 #
表3-2 Shell 文件名和缺省的提示符
Shell 文件名提示符
POSIX /usr/bin/sh $
C /usr/bin/csh %
Bourne 已过时/usr/old/bin/sh $
Korn 已由 POSIX shell 取代/usr/bin/ksh 链接到 /usr/bin/sh $
2 暂时更改 Shell
除非处于受限的 shell 中否则可以使用以下命令暂时更改 shell
shell_name
其中shell_name 是 shell 的名称例如sh 或 csh 暂时更改 shell 允许用
户在其他 shell 中进行试验通过键入要运行的 shell 名可以调用输入该
shell 并显示正确的提示符要返回原始的 shell 请键入 exit 或按 CTRL-D
以下示例从 POSIX Shell 中开始然后进入 C Shell 并返回到 POSIX Shell
csh(1)
$ csh 进入 C Shell
% ps 执行 ps 命令
PID TTY TIME COMMAND
6009 tty01 0:00 csh 注意 C 和 POSIX Shell 进程正在运行
5784 tty01 0:00 sh
6010 tty01 0:00 ps
% exit 退出 C Shell
$ 返回到 POSIX Shell
3 永久更改 Shell
要永久更改登录 shell 登录时缺省的 shell 请使用以下 chsh (change shell)
命令
chsh(1) $ chsh username full_shell_name
其中username 是用户名full_shell_name 是要更改为缺省 shell 的完整路
径名如 /usr/bin/sh 确定登录 Shell 包含每个 shell 的完整路径名使用
chsh 命令后必须注销并再次登录以使更改生效例如如果使用 terry
将缺省的登录 shell 更改为 C Shell chsh 命令的语法如下
$ chsh terry /usr/bin/csh
4 编辑命令行
在 POSIX shell 中使用行编辑命令或编辑键可以在输入之前更正命令行中
的错误还可以回调以前的命令并加以编辑请参阅本章下文的回调以
前的命令
使用 vi 行编辑命令
第 4 章使用 vi 编辑器说明了如何使用 vi 屏幕编辑器处理文本文件vi
编辑器还可用于编辑命令行
要在位于 POSIX shell 中时进入 vi 行编辑器模式请按 ESC 键从常用的
键入模式更改为编辑模式使用编辑命令移动光标或删除字符输入
vi 命令 i 或 a 返回到键入模式插入或添加文本
下表列出了一些 vi 编辑命令
所需操作 vi 命令
向前移动一个字符 h
向后移动一个字符 l
向前移动一个单词 b
向后移动一个单词 w
移动到一行的开头 ^
移动到一行的结尾 $
删除光标所在位置的字符 x
使用 EDITOR 变量设置管理编辑器命令集可以使用 vi 或 emacs 对 EDITOR
变量的设置还取决于定义的 VISUAL 变量
要暂时使用 vi 编辑器请键入 set -o vi 要关闭 vi 编辑模式请键入 set
+o vi 要在每次登录时自动设置 EDITOR 变量请参阅设置登录环境
vi 命令集附带的行编辑示例
激活 vi 命令集如果尚未使用登录脚本在登录时进行设置
$ set -o vi
请键入以下内容但不要按 Enter 键
$ ll /dve | grep '^d' | more
使用 Shell
编辑命令行
第 3 章85
第 2 个元素应该是 /dev 使用以下步骤更正错误
1. 按 ESC 键光标向前移动一个字符位于 more 中的 e 处行编辑器目
前处于命令模式下
ll /dve | grep '^d' | more
2. 重复按 H 将光标移动到 /dve 中 v 处
ll /dve | grep '^d' | more
3. 按 X 字符 v 消失该行剩余部分均向左移动一个字符以填补空缺光标
当前位于 /de 中 e 处
ll /de | grep '^d' | more
4. 按 A 光标向右移动一个字符行编辑器当前已准备就绪可以将文本
添加到该行中
ll /de_ | grep '^d' | more
5. 按 V 在 /de 后插入字符 v 更正完毕
ll /dev | grep '^d' | more
6. 按 Enter 键执行该命令行
5 回调以前的命令
POSIX shell 将所执行的命令存储在命令记录中可以检索修改和重新执行
这些命令有关 C Shell 命令记录实现的详细信息请参阅Shells: User's
Guide
例如通过键入 /usr/bin/sh 确定已进入 POSIX Shell
请尝试执行某些命令然后重新执行以前的命令
1. 确保已将 vi 设置为命令编辑器在登录会话的命令行中键入 set -o vi
或在 .profile 文件中设置适当的项并输出 EDITOR 变量
2. 按 ESC 键
3. 然后重复按 K 向上滚动到所需的以前的命令
4. 或者在命令记录列表中按 J 向上滚动
5. 找到所需的命令时可以对其进行编辑如同编辑当前命令
6. 然后可以通过按 Enter 键执行命令行中的命令
POSIX Shell 可以记住最近键入的 128 条命令并显示全部或部分命令
例如键入以下命令
$ date
1994 年 9 月 8 日 星期四15:01:51
$ pwd
/home/terry
$ hostname
hpabc
现在键入以下命令
$ history -3
121 date
122 pwd
123 hostname
124 history -3
注意POSIX Shell 会显示最后执行的 3 条命令 (date pwd 和 hostname) 和
history -3 命令通过在 history 后使用较大的负数可以增加命令记录的显
示数目例如如果记录中有 100 条命令以下命令将显示最后 100 条命令
$ history -100 | more
如果记录中的命令不足 100 条将显示全部记录将记录的输入结果传输到
more 命令中这样可以逐屏查看记录命令
7 设置登录环境
登录时shell 为用户自动定义唯一的工作环境并对该环境进行维护直至用
户注销该环境将定义如身份工作场所和正在运行的进程等特性这些特性
由指定的环境变量值定义
shell 环境与办公环境相似在办公室中每个人所处环境的物理特性如灯
光和温度相似但在办公环境中又有许多因素是个人特有的如日常工作和
个人工作空间因此您的工作环境就有别于其他同事的工作环境正如 shell
环境不同于其他环境
登录程序
登录时HP-UX 运行名为 login 的程序此程序使用存储在 /etc/passwd 文件
中的数据启动会话此文件为每个系统用户生成一行信息其中包括用户名
口令以加密形式主目录和登录时运行的 shell 如果 /etc/passwd 未指
定 shell 则选择 POSIX Shell (/usr/bin/sh)
login 程序的功能如下
• 显示 Password: 提示符如有口令
• 验证用户名和口令是否位于 /etc/passwd 文件中
• 将缺省值或用户定义的值指定给 shell 环境
• 开始执行 shell 进程
环境变量
shell 环境定义了 HP-UX 与用户进行交互的方式环境特性由包含名称和值的
环境变量定义例如每个会话的起始目录为主目录其环境变量是名为 HOME
的变量并在登录过程中指定其值在整个会话过程中HOME 的值等同于
/home/terry
以下是一些在登录过程中设置的环境变量注意大部分变量都已在缺省的
.profile 文件中设置
HOME • 定义用户的主目录cd 命令的缺省目录例如 /home/terry
• 登录期间指定的缺省值
使用 Shell
设置登录环境
第 3 章89
LOGNAME • 包含用户名例如 terry
• 缺省值为 username
MAIL • 确定系统查找邮件的位置基于用户名设置例如 /var/mail/terry
• 典型的缺省值为 /var/mail/username
PATH • 设置系统用于查找并执行命令的目录
• 典型的缺省值包括以下路径
/usr/bin:/usr/bin:/usr/contrib/bin:/usr/local/bin:/usr/lib
SHELL • 决定运行的 shell 设置用于用户登录的 /etc/passwd 文件项的最后一个
字段如果未定义此字段将使用缺省值
• 典型的缺省值为 /usr/bin/sh
TERM • 指定准备输出的终端类型
• 典型的缺省值为 hp
TZ • 提供当前时区及其与格林威治标准时间的差值缺省设置为山地标准时间
如果处于其他时区系统管理员应更改此值请使用脚本 /etc/profile
进行设置
• 典型的缺省值为 MST7MDT
EDITOR • 确定缺省的编辑器
• 典型的缺省值为 vi
DISPLAY • 指定窗口显示主机请在远程系统上使用以便在本地显示窗口
• 典型的缺省值为 DISPLAY=:0
8 登录脚本总结
下表总结了每个 shell 的登录脚本第一次登录后所有脚本都将运行有关
POSIX C Key 和 Bourne Shell 的详细信息请参阅Shells: User's Guide
表3-3 各种 Shell 及其登录脚本
Shell 系统登录脚本本地登录脚本
POSIX /etc/profile $HOME/.profile
C /etc/csh.login $HOME/.cshrc
$HOME/.login
Bourne 已过时/etc/profile $HOME/.profile
使用 Shell
设置和引用变量
92 第 3 章
设置和引用变量
shell 使用环境变量和 shell 变量定义环境登录 shell 使用环境变量并将这些
变量传递到所有进程和创建的 subshell 仅用户当前的 shell 可以识别 Shell 变
量但这些变量不会被传递到 subshell
$ POSIX shell 使用赋值语句和可选的 export 命令设置变量在所有 shell 中
通过在变量名前加一个货币符号 ($) 来引用变量值
为变量赋值
在 POSIX shell 中可以为变量赋值或对变量进行设置如有必要还可
以创建变量使用赋值语句可以完成这两项任务
name=value
name 表示变量名value 表示为变量赋的值name 和 = 之间或 = 和 value 之
间不允许有空格
在以下示例中将 shell 提示符 (PS1) 重新设置为
Ready ==>
如果 PS1 是 shell 变量则 subshell 通过键入 sh 创建不会识别新值如果
导出 PS1 PS1 的值将传递到 subshell
$ PS1="Ready ==> " 设置 shell 变量 PS1
Ready ==> sh 键入 subshell 名
$ exit Subshell 当前有缺省提示符退出到原始 shell
Ready ==> export PS1 使用 export 设置环境变量
Ready ==> sh 进入 subshell
Ready ==> Subshell 识别新的 PS1 值
Ready ==> exit 退出 subshell
Ready ==> PS1="$ " 使用 export 设置环境变量
$ 返回到正常的工作环境
使用 Shell
设置和引用变量
第 3 章93
引用变量的值参数替换
三种 shell 都使用参数替换引用变量值参数替换表示用变量值替换变量名
如果在变量名前加一个货币符号 ($) 即发生参数替换
例如在上文我们已了解到如何使用命令 echo $SHELL 确定登录 shell
$ echo SHELL 由于省略 $ 将回显单词 SHELL
SHELL
$ echo $SHELL 如果加上 $ 将回显 SHELL 的值
/usr/bin/sh
echo $SHELL 命令使用参数替换由于变量名前有货币符号 ($) 所以 shell 将
名为 SHELL 的环境变量值回显在 echo 命令下
更多信息
有关参数替换的详细信息请参考 sh sh-posix keysh 或 csh 联机帮助页
9 使用搜索路径查找命令
PATH 键入命令后HP-UX 必须能够找到包含命令的目录才能运行该命令查找命令
时PATH 环境变量包含用户希望 HP-UX 搜索的命令目录列表PATH 应包含所
有必要的目录以定位用户使用的所有命令
PATH 变量格式
从 .profile 或 /etc/profile 登录脚本读取 PATH 变量此变量包含待搜索的
目录列表中间用冒号分隔冒号前后不应有空格还可以按如下方式使用
echo 命令确定 PATH 的当前值
$ echo $PATH
/usr/bin/sh:/usr/bin:/usr/local/bin
此行内容表示键入命令后shell 首先在 /usr/bin/sh 目录/usr/bin 目录
和 /usr/local/bin 目录下搜索该命令如果这些目录下都没有该命令shell
将显示以下消息
command_name: 未找到
更改 PATH
如果 shell 无法找到确实存在的命令则有两种选择
1. 键入该命令的完整路径名例如如果希望执行位于 /home/sue/bin 目录
下的名为 prog 的命令请键入以下内容
$ /home/sue/bin/prog
2. 或者更改 PATH 变量的值以添加命令路径如果经常使用此命令这将
是长久之计
下表列出了最常用的目录的路径名
目录 内容
/usr/bin 常用的 HP-UX 命令
/usr/sbin 系统管理员使用的命令
/usr/bin/sh POSIX Shell
/usr/contrib/bin Hewlett-Packard 不支持第三方提供的程序
/usr/local/bin 在本地编写的程序和命令
$HOME/bin 可以为自己的 shell 脚本和程序创建的目录
使用 Shell
使用搜索路径查找命令
第 3 章95
注意考虑到潜在危险请勿将当前目录通常表示为 . 设置为 PATH 的第一个元
素请将当前目录置于 PATH 之外或仅将其作为最后一个元素予以保留
切记按显示从左到右顺序搜索 PATH 中的目录通常将最常用的目录设
置为路径的第一个元素 除非搜索路径下有两个同名的命令例如
/usr/bin/rm 和 $HOME/bin/rm 在本示例中如果想让 shell 首先查找 rm 版
本请在 PATH 中将 $HOME/bin 置于 /usr/bin 之前
以下示例说明如何更改 PATH 以将 $HOME/bin 放在其他目录前并将当前目
录作为搜索路径中的最后一个目录此示例假设用户使用的是 POSIX shell
$ echo $PATH
/usr/bin/sh:/usr/bin:/usr/bin:
/usr/contrib/bin:/usr/local/bin
$ PATH=$HOME/bin:$PATH:. 包含作为最后一个元素的. 使当前目录成为
$ echo $PATH 最后一个搜索目录
/home/terry/bin:/usr/bin/sh:/usr/bin:
/usr/bin:/usr/contrib/bin:/usr/local/bin:.
将 PATH 设置为环境变量
通常将 PATH 设置为环境变量以便在登录时为其赋予适当的值在 Bourne 和
POSIX shell 中可以更改 .profile 脚本中的 PATH 并导出有关这些脚本的详
细信息请参阅Shells: User's Guide
posted on 2006-10-18 12:46
有猫相伴的日子 阅读(2963)
评论(0) 编辑 收藏 所属分类:
linux/unix应用