- 可執行檔放置目錄,使用文字界面執行檔案時,直接輸入指令名稱就可執行,完全不必輸入絕對路徑或相對路徑指明執行檔所在位置,是因為環境變數 PATH 設定好執行檔可能的所在位置,系統會自動在這些目錄中搜尋。
[root@kvm5 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@kvm5 ~]# echo ${PATH}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- 例如:建立一個內容為 "ls -l /home" 的檔案試著執行,發現無權限。因為自行建立的檔案在家目錄,系統並不會自動搜尋,所以執行時使用
./ 指定是目前所在位置。另外,用戶可不可執行某一檔案,取決於其對於該檔案是否有「x」權限,所以以下例子無權限執行。
[root@kvm5 ~]# echo 'ls -l /home' > test.sh
[root@kvm5 ~]# ./test.sh
-bash: ./test.sh: Permission denied
- 變更檔案屬性,讓其可執行。
[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
- 因 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
- 若要讓所有用戶都可執行 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