如何使文件(例如 .sh 脚本)可执行,以便可以从终端运行

如何使文件(例如 .sh 脚本)可执行,以便可以从终端运行

我有一个 script.sh 文件,该文件的类型是 shellscript 文件。我想将此文件设为 application/x-executable 文件。我该怎么做?

答案1

您可以将该文件标记为可执行文件:

chmod +x filename.sh

然后你可以像这样执行它:

./filename.sh

如果您想使用不同的命令来启动它,您可以添加别名:

gedit ~/.bashrc

在文件末尾添加以下内容:

alias <new name>='/home/<full path to script>/filename.sh'

打开一个新的终端会话或source ~/.bashrc在终端中输入要应用的内容。然后只需使用新名称即可启动脚本。

答案2

有两种方法可以使文件可执行:

GUI 方法:

右键单击该文件并选择“属性”。转到权限选项卡,然后勾选复选框Execute: [ ] Allow executing file as programProgram: [ ] Allow this file to run as a program在 Thunar 中的 Nautilus 中勾选。

在此处输入图片描述

终端/命令方法:

您可以使用:

cd /to/my/required/directory

然后运行

chmod +x filename.extension

或者直接运行:

chmod +x /path/to/your/filename.extension

chmod还有一些更高级的选项:

这些空格是为了表明它被分割了:- rwx --- ---

第一组---是用户。第二组是组,最后一组是其他(其他任何人)

r 代表读取,w 代表写入,x 代表执行。

因此,要允许所有人读取它,但只有组可以执行并且用户可以读取和写入它(但由于某种原因不能执行),将是:

-rw- rx- r--但这将被添加到命令中:

chmod +rw-rx-r-- /path/to/file.extension

chmod也可以用数字来做到这一点。它基于二进制(我认为,因为它是 1、2 和 4)

因此有以下数字:

由用户执行是100。 由组执行是010。 由其他人执行是001

由用户写入是200。由组写入是020。由其他人写入是002

用户已读取是400。 组已读取是040。 其他人已读取是004

然后将它们加在一起即可得到所需的组合。

因此,为了允许所有人读取它,但只有组可以执行并且只有用户可以写入它(但由于某种原因不执行),应该是:

400 + 040 + 004010200

总计为 600 + 050 + 004 = 654。

然后您就可以运行该命令。

chmod +654 /path/to/file.extension进行设置。

要设置所有权限,您可以输入:

chmod +rwxrwxrwx /path/to/file.extension

或者(这写起来比较容易,但记住每一个比较困难):

chmod +777 /path/to/file.extension

最后,你可以这样做:

chmod -777 /path/to/file.extension

剥夺所有人的所有权限。

和:

chmod +300 /path/to/file.extension

为用户添加读写权限,而不影响任何其他权限(例如执行权限)。

本网站有一个非常有用的小网格复选框,您可以勾选所需的选项,它会给您命令:

在此处输入图片描述

然而,并非所有可能的组合都是合理的;主要使用的组合如下:

755 -Owner拥有全部,并且Group可以Other读取和执行

700 -Owner拥有全部

644 -Owner可以读写,并且Group可以Other读取

600 -Owner可以读写

而且,如果您使用非平凡用户组:

775 -Owner可以读写,并且Group可以Other读取

770 -Owner拥有Group全部,并Other能读取和执行

750-Owner拥有全部,并且Group可以读取和执行

664 -Owner可以Group读写,而且Other只能读取

660 -Owner并且Group可以读写

640 -Owner可以读写,并且Group可以读取

777 和 666 很少使用,除了在 /tmp 中。

谢谢伊尔玛里·卡罗宁为了指出常用的!

答案3

跑步:

chmod +x /path/to/file.sh

为了使其不可执行,请运行:

chmod -x /path/to/file.sh

例如我创建了.sh文件:

vi tester12.sh

在 vi 编辑器上编写一些代码后,我将退出 vi 编辑器:

:wq!
chmod +x tester12.sh
./tester12.sh

答案4

让所有用户运行你的脚本

如上所述,你可以设置文件的执行位以使其可执行chmod +x。但你也可以使用chmod a+x

$ ll file_command.txt
-rw-rw-r-- 1 rick rick 17 Sep 19 08:55 file_command.txt

$ chmod a+x file_command.txt

$ ll file_command.txt
-rwxrwxr-x 1 rick rick 17 Sep 19 08:55 file_command.txt*

笔记:

  • 脚本不必以 结尾,它可以以如此处所示.sh结尾,或者根本不带有任何扩展名。.txt
  • 不要仅仅+x(只有您可以执行脚本),而要使用a+x以便所有用户都可以执行脚本。
  • 文件名*后面附加了一个,表示它是可执行的。此外,在大多数系统上,文件名的颜色会变为绿色。

使脚本可执行


运行脚本但不使其可执行

你仍然可以运行 bash 脚本而不使它可执行。例如:

$ echo "echo Hello World" > file_command.txt

$ cat file_command.txt
echo Hello World

$ bash file_command.txt
Hello World

笔记:

  • 首先我们创建一个包含的脚本echo Hello World
  • 然后我们确认调用的脚本file_command.txt是正确的。
  • 最后,我们通过调用bash并传递脚本名称来运行该脚本。该bash命令实际上存储为,/bin/bash并且在所有 Ubuntu 系统上都是可执行文件。
  • 创建命令文件可以节省您添加舍邦 #!/bin/bash作为脚本的第一行。
  • 创建命令文件可以免去使用chmod +x或使其可执行的麻烦chmod a+x

相关内容