ksh和bash区别
ksh在unix上使用较多。比如hpux,AIX。
bash在linux上使用较多。
bash
最早的 Shell 是 Bourne Shell(sh), 随着 Linux 的发展, 又出现好多 Shell,如: csh, tcsh, ksh, tksh, dtksh, pdksh, bash, zsh. 有这么多 Shell,每个 Shell 都有自己的特点,使用起来肯定不方便,所以 IEEE 制订了 POSIX 标准。
ksh
ksh 的全称是 Korn shell,是一个 Linux/Unix shell,用来访问 Linux/Unix 系统。它完全向上兼容 Bourne shell 并包含了 C shell 的很多特性。
1982 年,AT&T 贝尔实验室的 David Korn 开发了 Korn shell(即 ksh)。Korn shell 与许多其他 shell 类似,向后兼容 Bourne shell (sh)。在超过 25 年的发展历程中,它已进化为强健、稳定和非常可靠的 shell。IBM 在 AIX 中使用 Korn shell 作为其缺省 shell。
第一种是 AIX 普通用户的缺省 shell,即标准 ksh shell。Korn shell 符合计算机环境的可移植操作系统接口标准 (POSIX),这是操作系统的国际标准。
AIX 提供的第二种 Korn shell 是增强 Korn shell,称为 ksh93。除标准 Korn shell 所拥有的所有强大功能外,增强 Korn shell 还包含如下功能:
算术增强
复合变量
复合赋值
关联数组
变量名引用
参数扩展
规程函数
函数环境
PATH 搜索规则
shell 历史记录
其他内置命令
根据您的喜好来设置 Korn shell 相当简单:登录到 ksh 下时,使用带有 -o 开关的 set 命令来查看您的当前设置:
# set -o
Current option settings are:
allexport off
bgnice on
emacs off
errexit off
gmacs off
ignoreeof off
interactive on
keyword off
markdirs off
monitor on
noexec off
noclobber off
noglob off
nolog off
notify off
nounset off
privileged off
restricted off
trackall off
verbose off
vi off
viraw off
xtrace off
#
下面简单介绍各项设置(您也可以通过运行 man set 找到这些说明)
allexport:自动导出所有定义的后续变量。
bgnice:在后台以更低的优先级运行所有进程。
emacs:编辑输入的命令行文本时,使用 emacs 风格的行内编辑器。
errexit:如果某个命令产生非 0(零)的退出状态并且设置了 ERR 陷阱,则执行 ERR 陷阱并退出。
gmacs:编辑输入的命令行文本时,使用 gmacs 风格的行内编辑器。
ignoreeof :忽略文件结束字符,并且不退出 shell。如果用户想要退出,则必须键入 exit 命令或按 11 次 Ctrl-D。
keyword :此选项将命令的所有参数放入环境中,而不仅仅放入命令之前的参数,使用 set 命令可以查看这些参数。
markdirs:在来自文件名替换的所有目录的末尾添加一个正斜杠 (/)。
monitor:将所有后台进程作为独立进程运行,并在进程结束时向 stdout 输出一行信息以通知用户。
noexec:不执行命令。仅检查语法错误。
注意:此参数在交互式 shell 中无效。
noclobber :当输出重定向到现有文件时,此标记可阻止截断这些文件。然而,启用此选项后,如果使用大于号加管道符号 (>|),则仍然会发生截断。
noglob:禁用文件名替换。
nolog:如果使用此选项,则函数定义不会存储在历史文件中。
nounset:如果执行替换,则所有未设置参数都作为错误返回。
restricted :运行受限制的 shell。用户无法执行下列操作:更改目录;更改 SHELL、ENV 或 PATH 变量;执行在文件名中包含正斜杠 (/) 的命令;或重定向输出。
trackall:每个命令在最初运行时都作为被跟踪的别名。
verbose:当 shell 读取输入行时,向 stdout 显示所有这些行。
vi:编辑输入的命令行文本时,使用 vi 风格的行内编辑器。
viraw:键入字符时,将每个字符处理成在 vi 编辑器下输入的原样。
xtrace:执行命令时,向 stdout 显示所有命令和参数。
若要开启内置命令集选项,请使用 -o 开关。相反,如果改变主意,可以使用 +o 开关关闭这些选项。
ksh具体使用,看 参考章节引用的文章!
linux更改用户的默认登陆shell
1.一般linux系统会默认使用一种shell,比如我当前系统使用的默认shell是bash,可以使用如下方法查看。
# echo $SHELL
/usr/bin/bash
2.当我们想尝试其他类型的shell时,可以使用如下方式切换,以及切换回来。
# cat /etc/shells
/bin/csh
/bin/ksh
/bin/psh
/bin/tsh
/bin/bsh
/usr/bin/csh
/usr/bin/ksh
/usr/bin/psh
/usr/bin/tsh
/usr/bin/bsh
/opt/freeware/bin/bash
#修改默认的shell为ksh
chsh [username [shell]]
# chsh root /bin/ksh
#查看修改是否成功
# head -1 /etc/passwd
root:!:0:0::/:/bin/ksh
参考
ksh 精萃
参考URL: https://blog.csdn.net/shangboerds/article/details/48623533
ksh的基本使用知识
参考URL: http://blog.chinaunix.net/uid-16981447-id-2839946.html