要使脚本在 Linux 中执行,需要启用
可执行
模式位。要设置可执行模式位,使用chmod
命令:
chmod u+x <file>
就可以直接执行了
./file
在 Linux 中使文件可执行
要检查文件是否有可执行权限,可以用使用
ls -l
查看。
> ls -l rumenz.sh
-rw-r--r-- 1 rumenz rumenz 0 Aug 10 20:49 rumenz.sh
在第一列中,
-rw-r--r--
代表所有者可以读写,所属组中的用户只能读取,其他人只能读取文件。
注意缺少
x
权限符号。这意味着它rumenz.sh
是不可执行的。
方法一:让文件所有人都可以执行
第一种方法,也是最直接的方法:
> chmod +x <file>
x
标志是设置或取消设置文件的可执行权限。使用+x
意味着我们要将其设置为可执行文件。
这将使文件对所有者、所属组和其他所有人都可执行。系统所有用户都可以执行该文件。
> ls -l rumenz.sh
-rw-r--r-- 1 rumenz rumenz 0 Aug 10 20:49 rumenz.sh
> chmod +x rumenz.sh
> ls -l rumenz.sh
-rwxr-xr-x 1 rumenz rumenz 0 Aug 10 20:49 rumenz.sh
方法 2:使文件仅对特定用户或组可执行
如果你不想让每个人都能够执行该脚本,则应在添加/删除文件权限之前指定权限类别。
权限类别:
-
u
:所有者/用户的权限 -
g
: 组权限 -
o
: 其他人的权限 -
a
: 所有人的权限
指定一个类别:
chmod <class>+x <file>
假如规定一个文件只有该文件的所有者能执行。
chmod u+x <file>
举个例子
> ls -l rumenz.sh
-rw-r--r-- 1 rumenz rumenz 0 Aug 10 20:49 rumenz.sh
> chmod u+x rumenz.sh
> ls -l rumenz.sh
-rwxr--r-- 1 rumenz rumenz 0 Aug 10 20:49 rumenz.sh
同样如果规定某个组的用户才能执行该文件。
chmod g+x <file>
举个例子
> ls -l rumenz.sh
-rw-r--r-- 1 rumenz rumenz 0 Aug 10 20:49 rumenz.sh
> chmod g+x rumenz.sh
> ls -l lhb.txt
-rw-r-xr-- 1 rumenz rumenz 0 Aug 10 20:49 rumenz.sh
当你指定
a
类时,就代表所有者
,所属组
,其他人
都可以执行。
> ls -l rumenz.sh
-rw-r--r-- 1 rumenz rumenz 0 Aug 10 20:49 rumenz.sh
> chmod +x rumenz.sh
> ls -l rumenz.sh
-rwxr-xr-x 1 rumenz rumenz 0 Aug 10 20:49 rumenz.sh
> chmod 644 rumenz.sh #reset permissions
> chmod a+x rumenz.sh
> ls -l rumenz.sh
-rwxr-xr-x 1 rumenz rumenz 0 Aug 10 20:49 rumenz.sh
方法 3:使用八进制数
数字权限有一个基本的规则
r=4
,w=2
,x=1
。最大的权限是777
也就是rwxrwxrwx
。
可以更精细地控制标志的设置方式。下面是在命令中使用八进制值的语法
chmod
:
> chmod <octal> <file>
举个例子,给
rumenz.sh
设置754
数字权限。
> ls -l rumenz.sh
-rw-r--r-- 1 rumenz rumenz 0 Aug 10 20:49 rumenz.sh
> chmod 754 rumenz.sh
> ls -l rumenz.sh
-rwxr-xr-- 1 rumenz rumenz 0 Aug 10 20:49 rumenz.sh
如你所见,只有所有者和组才能执行该文件。