最近在Quartet测试机台上写一个脚本,需要强制删除一个文件, 却发现即使使用 -f 选项,rm命令还是需要再次确认。
经过一番研究发现是shell的问题,csh里面的rm 就是不支持 -f 选项, 所以只有用标准的shell来解决这个问题:
sh -c "rm -f xxx"
1. 如何知道当前运行的是什么shell?
echo $SHELL
2. sh与csh的介绍
1979年,Stephen Bourne在V7
UNIX版本上引入了标准shell,即sh。sh是基于Algol的一种编程语言,主要是为了简化系统管理任务,由于缺少一些交互使用的特征,所以大多用来写脚本。
19世纪70年代后期,伯克莱分校在BSD
UNIX系统上引入了csh。在标准sh上添加了不少功能。C
shell在做为编程语言用时很像C语言,提供了相似的语法。而且为方便交互使用,还添加了命令行历史, 别名,
任务控制等功能。由于在大型机器上设计并添加了太多功能,显得有些臃肿,性能也比sh慢了很多。