GNU/Linux 操做系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号连接,但鉴于 bash 过于复杂,有人把 bash 从 NetBSD 移植到 Linux 并改名为 dash (Debian Almquist Shell),并建议将 /bin/sh 指向它,以得到更快的脚本执行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX标准。shell
1. ubuntu Linux localhost 4.4.0-105-generic #128-Ubuntu SMP Thu Dec 14 12:42:11 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux xhx@localhost:~$ ls -la /bin/sh lrwxrwxrwx 1 root root 4 Aug 17 2017 /bin/sh -> dash 2. centos [root@xuhx-02 bin]# uname -a Linux xuhx-02 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux [root@xuhx-02 bin]# ls -la sh lrwxrwxrwx. 1 root root 4 6月 25 16:52 sh -> bash
- sh/bash 是打开子shel,在子shell 中运行,在子shell 设置的环境变量不会影响到父shell;
- source 是在当前shell 中运行,所以修改完环境变量须要运行source /etc/profile 使其生效 而不是使用sh/bash命令;source = .;
- ./ 须要对执行的脚本有r和x权限
[root@xuhx-02 ~]# sh t.sh anaconda-ks.cfg hello n2n newdir1 pytho.py rpmbuild sort test.sh t.sh ttttt.sh [root@xuhx-02 ~]# bash t.sh anaconda-ks.cfg hello n2n newdir1 pytho.py rpmbuild sort test.sh t.sh ttttt.sh [root@xuhx-02 ~]# ./t.sh -bash: ./t.sh: 权限不够 [root@xuhx-02 ~]# source t.sh anaconda-ks.cfg hello n2n newdir1 pytho.py rpmbuild sort test.sh t.sh ttttt.sh [root@xuhx-02 ~]# . t.sh anaconda-ks.cfg hello n2n newdir1 pytho.py rpmbuild sort test.sh t.sh ttttt.sh
[========]ubuntu
参考 Linux里source、sh、bash、./有什么区别centos