shell:bash、sh、./、source

  1. sh 和 bash

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
  1. sh/bash 和 source
  • 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

相關文章
相關標籤/搜索