LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: Jcan

坛里有兄弟用dash吗? 说说自己的看法

[复制链接]
发表于 2010-9-18 10:00:02 | 显示全部楼层
诸位,请了解下 dash 前世今生:
http://en.wikipedia.org/wiki/Debian_Almquist_shell

用 dash 作为 /bin/sh,好处是[color="Red"]强制用户写出兼容性最强 shell 脚本,甚至通用所有 *nix-like 系统。
运行速度快,只是附带伤害。

用到某个 shell 特性,则脚本移植性将相应降低,如 bash ksh csh,如何取舍全看用户自己。

systemd 目标是替换 /sbin/init,与 shell 末直接关系。

shell perl python 各有适用范围,硬要做其不擅长工作只是自找麻烦。
回复 支持 反对

使用道具 举报

发表于 2010-9-18 13:00:48 | 显示全部楼层
{,d}ash目前正在走向POSIX-compliant但尚未完全POSIX-compliant,例如不支持上面给出的wiki里说的LINENO环境变量。
又例如,对简单命令,如果没给出绝对路径,POSIX的搜索顺序要求是:内置命令、函数和PATH里的程序;{,d}ash的搜索顺序是:函数、内置命令和PATH里的程序。
当然,shell的移植性还与所用的各类utility息息相关,感觉真要写可移植的shell脚本不如用可移植的shell,或者用Perl等脚本吕连。不过我也喜欢看{,d}ash的manpage和IEEE 1003.1写脚本,因为特性少反而易于学习 ;-)
回复 支持 反对

使用道具 举报

发表于 2010-9-18 16:14:39 | 显示全部楼层
Post by biinn;2112748
shell 我脚本几乎天天写。在嵌入环境里 perl 几乎不存在。。。


在嵌入环境里,可以用lua替代shell.
回复 支持 反对

使用道具 举报

发表于 2010-9-18 16:39:16 | 显示全部楼层
用lua代替shell...何必呢 = =
lua是battery required,没有扩展的话基本叫不了unix syscall
回复 支持 反对

使用道具 举报

发表于 2010-10-17 09:59:59 | 显示全部楼层
我用busybox的ash写脚本,效率不错,也支持部分bash扩展语法
(ldd在bash和ash下都可以使用)
回复 支持 反对

使用道具 举报

发表于 2010-10-17 17:14:32 | 显示全部楼层
dash 不支持 [[
比较郁闷
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表