next up previous contents
Next: 可執行檔別名 Up: 可執行檔 Previous: 改變檔案權限   Contents

可執行檔

  1. 可執行檔放置目錄,使用文字界面執行檔案時,直接輸入指令名稱就可執行,完全不必輸入絕對路徑或相對路徑指明執行檔所在位置,是因為環境變數 PATH 設定好執行檔可能的所在位置,系統會自動在這些目錄中搜尋。
    [root@dywOffice ~]# echo $PATH
    /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
    [root@dywOffice ~]# echo ${PATH}
    /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
    
  2. 例如:建立一個內容為 "ls -l /home" 的檔案試著執行,發現無權限。因為自行建立的檔案在家目錄,系統並不會自動搜尋,所以執行時使用 ./ 指定是目前所在位置。另外,用戶可不可執行某一檔案,取決於其對於該檔案是否有「x」權限,所以以下例子無權限執行。
    [root@kvm5 ~]# echo 'ls -l /home' > test.sh
    [root@kvm5 ~]# ./test.sh
    -bash: ./test.sh: Permission denied
    
  3. 變更檔案屬性,讓其可執行。
    [root@kvm5 ~]# chmod a+x test.sh 
    [root@kvm5 ~]# ll test.sh 
    -rwxr-xr-x. 1 root root 12 Aug  4 12:05 test.sh
    [root@kvm5 ~]# ./test.sh 
    total 19
    drwx------. 2 deyu1 deyu1  1024 Aug  4 10:08 deyu1
    drwx------. 2 deyu2 deyu2  1024 Aug  4 10:08 deyu2
    drwx------. 2 deyu3 deyu3  1024 Aug  4 10:08 deyu3
    drwx------. 2 root  root  12288 Aug  3 15:53 lost+found
    
  4. 因 test.sh 在 root 的家目錄,其他用戶如 deyu1 不能執行。
    [root@kvm5 ~]# pwd
    /root
    [root@kvm5 ~]# cat /root/test.sh 
    ls -l /home
    [root@kvm5 ~]# su - deyu1
    [deyu1@kvm5 ~]$ /root/test.sh
    -bash: /root/test.sh: Permission denied
    [deyu1@kvm5 ~]$ exit
    logout
    
  5. 若要讓所有用戶都可執行 test.sh,必須將其移至環境變數 PATH 中,一般用戶可以存取的目錄。
    [root@kvm5 ~]# mv test.sh /usr/bin/
    [root@kvm5 ~]# test.sh 
    total 19
    drwx------. 2 deyu1 deyu1  1024 Aug  4 12:17 deyu1
    drwx------. 2 deyu2 deyu2  1024 Aug  4 10:08 deyu2
    drwx------. 2 deyu3 deyu3  1024 Aug  4 10:08 deyu3
    drwx------. 2 root  root  12288 Aug  3 15:53 lost+found
    [root@kvm5 ~]# su - deyu1
    Last login: Tue Aug  4 12:16:56 CST 2015 on pts/1
    [deyu1@kvm5 ~]$ test.sh 
    total 19
    drwx------. 2 deyu1 deyu1  1024 Aug  4 12:17 deyu1
    drwx------. 2 deyu2 deyu2  1024 Aug  4 10:08 deyu2
    drwx------. 2 deyu3 deyu3  1024 Aug  4 10:08 deyu3
    drwx------. 2 root  root  12288 Aug  3 15:53 lost+found
    


2017-11-30