UnixShell高级特性全解析
立即解锁
发布时间: 2025-08-25 00:17:15 阅读量: 6 订阅数: 10 

### Unix Shell高级特性全解析
#### 1. 环境变量的运用
环境变量可用于存储信息,以便在所有的shell和子进程中使用。以C shell语法为例,可在shell的`.login`启动文件中设置环境变量。例如:
```
setenv COPIES /var/tmp/joanna/backup-copies
```
当使用`vi`编辑器并想将编辑的文件保存到该目录时,可使用如下文件写入命令:
```
:w $COPIES/filename
```
这样,文件就会被写入到`/var/tmp/joanna/backup-copies/filename`。
#### 2. 时区环境变量问题
假设在便携式计算机上,屏幕角落显示着图形时钟。若在shell中通过输入`setenv TZ CET`来更改`TZ`环境变量,图形时钟却不会改变。原因在于,是在shell进程中更改了环境变量,而Unix中一个进程无法改变另一个正在运行进程的环境,图形时钟进程与shell进程无关。要改变图形时钟,需使用系统的特殊工具,可能要更改主系统时钟。
#### 3. 进程的启动与停止
在Unix中启动一个进程后,它会运行直到程序结束后退出。默认情况下,shell会等待进程结束后才打印下一个提示符。不过,有时我们希望在进程运行时做其他事情。比如,从shell启动Mozilla浏览器:
```
% mozilla
```
此时该窗口无反应且无提示符,Mozilla会打开新窗口,可使用Mozilla直到选择其“退出”命令,这时`mozilla`进程结束,shell会打印新的提示符。若想在Mozilla运行时,从shell运行`cal`命令查看本月日历,由于没有shell提示符,无法输入`cal`命令(实际上输入了shell也不会运行,直到`mozilla`结束)。
#### 4. 后台处理
shell具备后台处理功能,适用于无需在终端交互的程序。后台进程是Unix的特性,shell让其更易用。若想启动程序并立即获得另一个shell提示符,可将程序置于后台,最简单的方法是在命令行末尾添加`&`。例如:
```
% mozilla &
[1] 9989
%
```
此时,shell和Mozilla两个进程同时运行。若还想使用`xemacs`编辑器进行编辑,也可将其置于后台启动:
```
% xemacs &
[2] 10023
%
```
要查看从该shell运行的后台作业列表,可使用shell的内置`jobs`命令:
```
% jobs
[1] Running mozilla
[2] Running xemacs
%
```
后台处理适合像Mozilla或`xemacs`这类有自己窗口的程序,因为shell可在等待进程结束时做其他事。若程序向终端输出内容,通常仍会显示在终端,但可能会与前台操作内容混淆。Unix命令`stty tostop`可防止这种混乱,但这是高级命令,需了解shell的作业控制功能后再使用。若程序需要从运行的终端读取内容,则不适合在后台运行,因为同一时间只有一个进程能从键盘(或标准输入)读取内容。
#### 5. 停止作业
Unix系统擅长管理多个进程,但当运行的进程过多,系统可能会出现内存或CPU资源不足,导致响应变慢。此时可完全停止一个后台作业,之后还能从停止处重新启动,不会丢失进度。若作业有自己的窗口,在停止作业前应将其最小化,否则窗口可能会“冻结”,直到重新启动作业。
- **C shell**:可使用`stop`命令和作业编号停止作业,作业编号以`%`开头。例如,停止Mozilla:
```
% stop %1
% jobs
[1] + Suspended (signal) mozilla
[2] Running xemacs
%
```
- **Bourne-type shell**:大多没有`stop`命令,可使用`kill`命令。`kill`命令并非一定“杀死”作业,而是向作业中的进程发送信号。`kill`的第一个参数是信号名或信号编号,前面加`-`,其他参数是应接收信号的作业编号或PID。例如,在Z shell中停止Mozilla:
```
zsh% kill -TSTP %1
zsh%
zsh% jobs
[1] + suspended (signal) mozilla
[2] running xemacs
```
若想在非C shell中添加`stop`命令,可使用别名:
```
alias stop='kill -TSTP'
```
#### 6. 键盘信号
向“前台”进程(控制终端且无shell提示符的进程)发送信号,通常使用`Ctrl`键加另一个键。常见的键组合及对应信号和效果如下表:
| 键组合 | 发送信号 | 效果 |
| ---- | ---- | ---- |
|
0
0
复制全文
相关推荐










