可執行檔

  1. 可執行檔放置目錄,使用文字界面執行檔案時,直接輸入指令名稱就可執行,完全不必輸入絕對路徑或相對路徑指明執行檔所在位置,是因為環境變數 PATH 設定好執行檔可能的所在位置,系統會自動在這些目錄中搜尋。
    [root@kvm8 ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [root@kvm8 ~]# echo ${PATH}
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    
  2. 目前的目錄為 /root,目錄內有 newfind.sh 可執行檔,但執行 newfind.sh 卻回應沒有此一命令,原因為執行命令時,linux 系統只會在 PATH 變數包含的目錄中尋找指令。
    [root@kvm8 ~]# pwd
    /root
    [root@kvm8 ~]# ll newfind.sh
    -rwxr-xr-x. 1 root root 34 Oct 29 15:15 newfind.sh
    [root@kvm8 ~]# newfind.sh
    -bash: newfind.sh: command not found
    
  3. 若要執行不是存在 PATH 變數指定的目錄的執行檔,必須明確指定路徑才可執行,以絕對路徑 /root/newfind.sh 或相對路徑 ./newfind.sh 都可以,其中 . 表示目錄的位置。
    [root@kvm8 ~]# /root/newfind.sh
    /usr/lib64/libicudata.so.60.3
    /usr/lib64/ceph/libceph-common.so.0
    /usr/lib64/libmozjs-60.so.0.0.0
    /usr/bin/podman
    /usr/libexec/cni/dhcp
    /usr/share/GeoIP/GeoLite2-City.mmdb
    [root@kvm8 ~]# ./newfind.sh
    /usr/lib64/libicudata.so.60.3
    /usr/lib64/ceph/libceph-common.so.0
    /usr/lib64/libmozjs-60.so.0.0.0
    /usr/bin/podman
    /usr/libexec/cni/dhcp
    /usr/share/GeoIP/GeoLite2-City.mmdb
    
  4. 若要讓所有用戶都可執行 newfind.sh,必須將其移至環境變數 PATH 指定的目錄中,此例,將 newfind.sh 移至 /usr/loca/bin 目錄,就可以不指定執行檔位置直接執行。
    [root@kvm8 ~]# mv newfind.sh /usr/local/bin/
    [root@kvm8 ~]# newfind.sh
    /usr/lib64/libicudata.so.60.3
    /usr/lib64/ceph/libceph-common.so.0
    /usr/lib64/libmozjs-60.so.0.0.0
    /usr/bin/podman
    /usr/libexec/cni/dhcp
    /usr/share/GeoIP/GeoLite2-City.mmdb
    [root@kvm8 ~]#