我發現做一個sh文件時,通常情況下,那麼我們編輯文件的可執行標誌有什麼區別.sh文件來更改可執行文件(chmod + x)而不是?
$ chmod +x <sth>.sh
但是,如果沒有該可執行文件標記,sh文件可以可執行。
$ sh ./<sth>.sh
爲什麼我們需要chmod?
祝您有美好的一天!
我發現做一個sh文件時,通常情況下,那麼我們編輯文件的可執行標誌有什麼區別.sh文件來更改可執行文件(chmod + x)而不是?
$ chmod +x <sth>.sh
但是,如果沒有該可執行文件標記,sh文件可以可執行。
$ sh ./<sth>.sh
爲什麼我們需要chmod?
祝您有美好的一天!
通過使用chmod
並打開執行權限,你可以運行使用
<sth>.sh
沒有可執行權限的文件,如果您已經閱讀權限,你仍然可以運行腳本,但你必須使用一個解釋,如sh
或bash
當你
sh <sth>.sh
這意味着運行sh
命令,其中讀取 .sh文件,然後解釋它,因此您不需要執行權限。
'sh'命令只適用於POSIX腳本。對於bash腳本,「bash」;對於ksh腳本'ksh'等,否則如果提供'sh'的解釋程序不提供腳本所需的功能,則會出現錯誤。 –
(即使'/ bin/sh'由'bash'提供,它在兼容模式下運行,在運行時關閉許多非POSIX功能)。 –
@bkmoney謝謝!,我不明白... unix系統對我來說太複雜了 – sjlee
當你不給文件的可執行權限時,你必須提及你想運行你的文件的二進制文件。
例如,你必須運行文件一樣
SH example.sh
但是當你給文件可執行權限允許您運行該文件./example.sh
謝謝,祝你有美好的一天! – sjlee
可執行文件在UNIX中定義命令和命令名稱不應具有擴展名。你運行'ls',而不是'ls.elf',所以它應該同樣是'sth',而不是'sth.sh'。 –
...無論如何,'sh sth.sh' **不會**執行腳本;它執行'sh',**讀取腳本,但不以任何操作系統關心的方式執行它(不執行'execv'-系列調用);因此不需要執行權限。 –
@CharlesDuffy謝謝,我明白..但是,正確的是,我明白,chmod和執行具有廣泛的功能? – sjlee