问题
一般情况下,sh
是指向 bash
的链接。查看 bash 的手册页可知,bash 作为 sh 运行时,相当于 bash --posix
,即 sh 以符合 POSIX 标准的方式来运行。
在一次使用脚本的过程中,发现脚本中 alias
命令设置的别名始终无效。后来查资料发现,bash
和 sh
运行脚本的结果是不同的。
默认情况下,bash 运行非交互式 shell 时,是关闭 alias
别名扩展功能的,而脚本就是非交互式 shell。但是,sh 同样的情况下是开启别名扩展功能的。
解决
① 使用 sh 运行脚本。
② 在脚本文件中显式地指出开启别名扩展功能,方法:
1 | # 在脚本的 alias 命令之前添加如下命令 |
注意
关于 bash
与 sh
的差别可能还有更多,写脚本后应该充分测试。
参考:
https://blog.csdn.net/liuxiangke0210/article/details/66476970