概述
Shell的类型
Linux中默认的Shell是/bin/bash,流行的Shell有ash、bash、ksh、csh、zsh等,不同的Shell都有自己的特点以及用途,在liunx里面使用的都是一般都是bash
查看本机的shell种类
cat /etc/shells
/bin/sh #是bash的一个快捷方式
/bin/bash #bash是大多数Linux默认的shell,包含的功能几乎可以涵盖shell所有的功能
/sbin/nologin #表示非交互,不能登录操作系统
/bin/dash #小巧,高效,功能相比少一些
/bin/csh #具有C语言风格的一种shell,具有许多特性,但也有一些缺陷
/bin/tcsh #是csh的增强版,完全兼容csh
注:/bin/sh 和 /bin/bash 是一个东西,/bin/sh 是bash的一个快捷方式
站在用户登录的角度来说,SHELL的类型
- 登录式shell:
- 正常通常某终端登录
- su - USERNAME
- su -l USERNAME
- 正常通常某终端登录
- 非登录式shell:
- su USERNAME
- 图形终端下打开命令窗口
- 自动执行的shell脚本
Shell的运行方式
1、作为可执行程序
#!/bin/bash
.....
将上面的代码保存为 test.sh,并 cd 到相应目录:
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。
2、作为解释器参数
这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:
/bin/sh test.sh
/bin/php test.php
这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。
Shell的运行返回
程序执行,可能有两类返回值
- 程序执行结果
- 程序状态返回代码(0-255)
- 0: 正确执行
- 1-255:错误执行,1,2,127系统预留;
定义脚本退出状态码
exit: 退出脚本
exit #
如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码即为脚本的退出状态码;
管道和重定向
shell、管道和重定向都是liunx特别厉害的设计,一般也是结合使用
重定向
涉及重定向,必须了解INPUT设备与OUTPUT设备
系统设定
- 默认输出设备:标准输出,STDOUT, 1
- 默认输入设备:标准输入, STDIN, 0
- 标准错误输出:STDERR, 2
- 标准输入:键盘
- 标准输出和错误输出:显示器
Linux:
>: 覆盖输出
>>:追加输出
2>: 重定向错误输出
2>>: 追加方式
&>: 重定向标准输出或错误输出至同一个文件
set -C: 禁止对已经存在文件使用覆盖重定向;
强制覆盖输出,则使用 >|
set +C: 关闭上述功能
/dev/null: 软件设备, bit bucket,数据黑洞
<:输入重定向
<<:Here Document
管道
前一个命令的输出,作为后一个命令的输入
命令1 | 命令2 | 命令3 | ...
bash的配置文件
bash: 脚本解释器
-
全局配置
/etc/profile, /etc/profile.d/*.sh, /etc/bashrc
-
个人配置
~/.bash_profile, ~/.bashrc
- profile: 定义环境变量、运行程序或脚本
- bashrc:定义本地变量、命令别名
登录式shell如何读取配置文件?
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非登录式shell如何配置文件?
~/.bashrc --> /etc/basrc --> /etc/profile.d/*.sh
bash调试参数
测试脚本是否有语法错误:
bash -n 脚本
调试脚本:
bash -x 脚本:打印每步执行
最后
以上就是健康美女为你收集整理的Shell-01Shell初相识的全部内容,希望文章能够帮你解决Shell-01Shell初相识所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复