原理:可經過判斷 $0 來執行不一樣命令
bash
以下:ide
[root@test-01 ~]# cat b #!/bin/bash # [[ $0 =~ ^(.*)/c$ ]] || [[ $0 == "c" ]] && echo "c" [[ $0 =~ ^(.*)/d$ ]] || [[ $0 == "d" ]] && echo "d" [root@test-01 ~]# ll c d lrwxrwxrwx 1 root root 1 Sep 6 16:19 c -> b lrwxrwxrwx 1 root root 1 Sep 6 16:20 d -> b [root@test-01 ~]# ./c c [root@test-01 ~]# ./d d [root@test-01 ~]# ./b [root@test-01 ~]# bash c c [root@test-01 ~]# bash d d [root@test-01 ~]# bash b [root@test-01 ~]# /root/c c [root@test-01 ~]# /root/d d [root@test-01 ~]# /root/b [root@test-01 ~]#
上面 c 和 d 文件都是 b 文件的軟連接,經過判斷連接名字,即 $0,來執行不一樣的命令內容。it
bash 和 sh 應該就是這種方式
class
[root@test-01 ~]# ll /usr/bin/sh lrwxrwxrwx 1 root root 4 Aug 29 14:18 /usr/bin/sh -> bash [root@test-01 ~]# ll /usr/bin/bash -rwxr-xr-x 1 root root 964544 Apr 11 08:53 /usr/bin/bash