如何运行 .sh 脚本?

Ale*_*lex 422 command-line bash scripts execute-command

每当我打开一个 .sh 文件时,它都会在 gedit 而不是终端中打开它。我找不到任何类似于Right Click 的选项?打开方式其他应用...终端

如何在终端中打开此文件?

kar*_*k87 645

为您的脚本授予执行权限:

chmod +x /path/to/yourscript.sh
Run Code Online (Sandbox Code Playgroud)

并运行您的脚本:

/path/to/yourscript.sh
Run Code Online (Sandbox Code Playgroud)

由于.是指当前目录:如果yourscript.sh在当前目录中,则可以将其简化为:

./yourscript.sh
Run Code Online (Sandbox Code Playgroud)

  • 如果你使用 `bash /path/to/yourscript.sh` 那么你就不需要 `chmod +x` (95认同)
  • +1 仅回答显示仅以终端方式添加执行权限。 (13认同)
  • 实际上,您可以使用`. /path/to/yourscript.sh` 如果脚本必须设置一些环境变量。 (5认同)
  • 没有人提到传统的:“./path/to/yourscript.sh”(“.”后面没有空格)?我发现其中一个是最简单、最容易使用的...但无论如何,这是我的替代方案,它的功能应该与 `./` 几乎相同,尽管我不明白为什么您不使用 `./` : `(FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)` ...根据您的喜好编辑`FILENAME`。另请注意,如果没有其他选择,将使用“sh”。 (2认同)

Isa*_*iah 102

您需要将 shell 脚本标记为可执行文件才能从文件管理器运行它们:

  1. 右键单击您的.sh文件并选择Properties

    在此处输入图片说明

  2. 在“权限”选项卡中,选中“允许将文件作为程序执行”

    在此处输入图片说明

  3. 关闭“属性”窗口并双击该文件。将弹出一个对话框,让您可以选择在终端中运行脚本:

    在此处输入图片说明

  • 这在 Ubuntu 13.04 中不起作用。无论如何都会在 gedit 中打开,从不要求我执行。编辑:Nvm,imjustmatthew 回答了这个问题。 (11认同)
  • @DanielMöller,这是您问题的答案。https://askubuntu.com/questions/38661/how-do-i-run-sh-files/1065846#1065846 (2认同)

小智 54

打开终端并导航到文件所在的.sh文件夹。然后输入:

sh <name of file>.sh
Run Code Online (Sandbox Code Playgroud)

  • 打开任何应用程序的最佳方式。导航到 .sh 目录,然后在命令提示符中打开它。使用 sh &lt;文件名如上所示&gt;.sh 如果需要权限,请使用 chmod +x /path/to/yourscript.sh 或右键单击并将权限更改为全部 (2认同)

Ale*_*huk 30

先决条件

在运行 .sh 文件之前,您需要使其可执行:

  1. 右键单击文件
  2. 选择属性
  3. 选择权限
  4. 选择允许将文件作为程序执行

警告

确保您信任您获取文件的来源。它可能是一种病毒

非常简单的方法

  1. 双击文件
  2. 在终端点击运行

这有问题。终端将立即关闭,您将无法看到输出。

简单的方法

  1. 打开应用程序 -> 附件 -> 终端
  2. 将 .sh 文件拖放到终端中,然后按 Enter

专业人士的做法

  1. 打开应用程序 -> 附件 -> 终端
  2. 找到 .sh 文件的位置

    • 使用lscd命令
    • ls将列出当前文件夹中的文件和文件。试一试:输入“ls”并按 Enter。
    • 看到要进入的文件夹后,运行cd,后跟一个空格,后跟一个文件夹名称
    • 如果你进入一个你不想要的文件夹,运行向上cd ..一级
  3. 运行 .sh 文件

为什么要以复杂的方式进行?

终端有一组丰富的强大工具,可通过键入命令访问。专业人员通过键入ls和 来定位 .sh 文件cd。进入正确的当前文件夹后,您可以像这样运行脚本:

./script1.sh
Run Code Online (Sandbox Code Playgroud)

或者您可以运行并将输出重定向到文件:

./script1.sh > out.txt
Run Code Online (Sandbox Code Playgroud)

或者您可以过滤关键字(例如“apples”)的输出,然后重定向到一个文件:

./script1.sh | grep apples > ./only-apples
Run Code Online (Sandbox Code Playgroud)

只需键入一些命令,您就可以对该文件进行数以千计的操作。

另一种是,您可以使用一个简单的命令从 Internet 下载文件:

wget www.google.com/images/logos/ps_logo2.png
Run Code Online (Sandbox Code Playgroud)

然后像这样打开文件:

shotwell ps_logo2.png
Run Code Online (Sandbox Code Playgroud)

  • 我不确定*专业人士的做法*是否正确,这更像是*简单方法**高级(用于控制输出)*方法的一种情况 (8认同)

小智 21

在 Ubuntu 13.04 上,在 Nautilus 中打开的可执行文件现在默认在 gedit 中打开,而不是提示用户执行它们。要启用经典行为,您需要调整首选项:

鹦鹉螺?编辑菜单 ? 喜好 ?行为选项卡?每次点击询问附近的单选按钮。

  • 从 Ubuntu 18.04 开始,您可以通过打开目录然后单击顶部栏中的“文件 -&gt; 首选项”来访问首选项。 (3认同)
  • 谢谢你!!!我不知道他们为什么要改变这个,不知道如何执行任何事情。 (2认同)
  • 这是最新 ubuntus 的正确答案。 (2认同)

The*_*ist 8

.sh使用cd.转到文件所在的目录。在这个例子中,我将我的sh文件存储为~/Desktop/shell_practice/test.sh

首先pwd弄清楚你在哪里,如果它返回/home/usernameusername你的真实用户名在哪里),你可以运行

cd Desktop/shell/practice
Run Code Online (Sandbox Code Playgroud)

如果您似乎在其他地方,则可以使用绝对路径

cd ~/Desktop/shell/practice
Run Code Online (Sandbox Code Playgroud)

或者

cd $HOME/Desktop/shell/practice
Run Code Online (Sandbox Code Playgroud)

甚至

cd /home/$USER/Desktop/shell/practice
Run Code Online (Sandbox Code Playgroud)

这些都是描述同一个地方的方式。到达脚本的位置后,键入

ls
Run Code Online (Sandbox Code Playgroud)

如果您可以sh在输出中看到该文件,则可以使用chmod它来使其可执行。就我而言,请记住,文件名是test.sh,所以我会运行

chmod u+x test.sh
Run Code Online (Sandbox Code Playgroud)

现在我们与脚本位于同一目录中,我们必须通过提供文件位置./(当前目录后跟路径分隔符,以将其与文件名区分开来)来向 shell 指定我们要执行该文件。要运行我的文件,我会输入:

./test.sh
Run Code Online (Sandbox Code Playgroud)

如果您的脚本编写正确,它将运行而不会出错...

这是一个活生生的例子: 这是现场示例

  • Wb,@RuD3B0y,我试图为菜鸟提供最好的答案,没有高科技内容,如果您有一些编辑,欢迎您。 (2认同)

Akh*_*bey 8

对于Ubuntu 18.04,有一些修改,因为您没有弹出对话框。

所以你需要做的是:

右键单击文件,选择首选项 > 选择行为选项卡 > 在可执行文本文件下标记“询问做什么”选项。

现在,当您双击任何 .sh 文件时,您将看到一个弹出窗口,您可以在那里选择“在终端中运行”选项来运行您的 .sh 文件。

在此处输入图片说明

  • 有点奇怪,因为我在右键菜单中没有“首选项”选项。我只有属性。 (2认同)

小智 6

有几种方法可以做到这一点。

选项1

  1. 在终端中,访问 Bash 文件正在使用的cd目录(更改目录)。

    前任。 cd Downloads

  2. bash <filename>.sh

    这也适用于 .run 文件。这个网页上有一个关于更新 Rhythmbox的例子

选项 2

  1. 在终端中,导航到 bash 文件所在的目录。

  2. chmod +x <filename>.sh

  3. 在 Nautilus 中,打开文件。


小智 5

2个主要步骤。

  1. 在终端中,使用 gedit 编写扩展名为“.sh”的脚本并将其保存到桌面。(但可以使用任何文本编辑器)

  2. 打开 Nautilus 并右键单击 script.sh 文件。

    • 在属性下,复选框“允许执行文件..”

    • 在 Nautilus 菜单中,单击文件,然后是首选项,然后是行为

    • 勾选“打开时运行可执行文本文件”。

现在,当您双击桌面上的文件时,它应该会执行。不需要../


小智 5

  1. 右键单击该.sh文件并使其可执行。

  2. 打开终端 ( Ctrl++ Alt) T

  3. .sh文件拖到终端窗口中并惊叹不已。

  • 欢迎询问 Ubuntu!我建议[编辑]这个答案以扩展它,并提供有关如何执行第一步的具体细节。(另请参阅 [如何写出一个好的答案?](/help/how-to-answer),了解 AskUbuntu 上哪些类型的答案被认为最有价值的一般建议。) (2认同)