【问题标题】:How do I run .sh or .bat files from Terminal?如何从终端运行 .sh 或 .bat 文件?
【发布时间】:2013-06-05 14:39:58
【问题描述】:

我这里有一个非常基本的问题,这对我来说发生得太偶然了,直到现在,我只是忽略了它。我下载了 tomcat 网络服务器,“Murach 的 Java Servlets 和 JSP”一书告诉我导航到 tomcat/bin 目录并启动我在终端中输入的服务器

$ 启动

但是,我得到了错误

-bash: startup: command not found

该目录下的相关文件为startup.sh和startup.bat。键入这两个返回相同的错误消息

所以我的问题是,什么是 .bat 和 sh 文件,以及如何运行这些文件?我已经阅读了几个针对不同语言和软件程序的教程,有时当教程说在命令行中执行一堆文件时,我会收到“找不到命令”错误。有时有效,有时无效。这让我很困惑,那么解决这些“找不到命令”终端问题的常见解决方案是什么?

【问题讨论】:

    标签: bash tomcat terminal


    【解决方案1】:

    .sh 用于 *nix 系统,.bat 应用于 Windows。由于您的示例显示了 bash 错误并且您提到了终端,因此我假设您使用的是 OS X。

    在这种情况下,您应该转到文件夹并输入:

    ./startup.sh
    

    ./ 只是表示您应该调用位于当前目录中的脚本。 (或者,只需键入startup.sh 的完整路径)。如果还是不行,检查startup.sh是否有执行权限。

    【讨论】:

    • 感谢 pilsetnieks 的解释。我输入了你所说的,它有效!到下一个安装问题。
    • 如果你有权限被拒绝,你可能需要做sudo ./startup.sh
    • 运行 sudo ./scriptname.sh 由于某种原因导致“找不到命令”错误。
    • 使用 sh "sh /path/to/script" 运行它。如果权限被拒绝使用'sudo'
    • 可以通过在您的系统上安装、配置和使用“Wine”包在 Linux 上运行批处理文件。请参阅以下链接中的说明:linux.org/threads/running-windows-batch-files-on-linux.11205/…
    【解决方案2】:

    这是因为脚本不在您的 $PATH 中。使用

    ./scriptname
    

    您也可以将其复制到 $PATH 中的文件夹之一或更改 $PATH 变量,以便您始终可以只使用脚本名称。但是请注意,您当前的文件夹不在 $PATH 中是有原因的。这可能存在安全风险。

    如果您在执行脚本时仍然遇到问题,您可能需要检查它的权限 - 显然,您必须具有执行权限才能执行它。使用

    chmod u+x scriptname
    

    .sh 文件是一个 Unix shell 脚本。 .bat 文件是 Windows 批处理文件。

    【讨论】:

    • 感谢您的备用步骤。 chmod u+x scriptname 它修复了 Permission denied 错误
    【解决方案3】:

    在 linux 终端中输入 bash script_name.sh./script_name。在使用./script_name 之前,让你的脚本可以由sudo chmod 700 script_name 执行,然后在windows 中输入script_name.bat

    【讨论】:

      【解决方案4】:

      拖放

      像我这样懒惰的 Mac 用户最简单的方法:将 startup.sh 文件从 Finder 拖放到终端窗口,然后按 Return。

      要关闭 Tomcat,对 shutdown.sh 执行相同操作。

      您可以删除所有 .bat 文件,因为它们仅适用于 Windows PC,在 Mac 上对其他 Unix 计算机没有用处。我删除了它们,因为这样更容易阅读该文件夹的列表。

      文件权限

      我发现新的 Tomcat 下载将无法在我的 Mac 上运行,因为文件权限限制会在启动期间引发错误。我使用BatChmod 应用程序,它围绕等效的 Unix 命令包装 GUI 来重置文件权限。

      端口转发

      Unix 系统保护对编号低于 1024 的端口的访问。因此,如果您想在 Tomcat 中使用端口 80,您需要学习如何进行“端口转发”以将传入请求转发到 Tomcat 默认侦听的端口 8080。要进行端口转发,您可以向 Mac OS X(和 BSD)中内置的数据包过滤(防火墙)应用程序发出命令。在过去,我们使用ipfw。在 Mac OS X 10.7 (Lion) 及更高版本中,Apple 正在转向更新的工具 pf

      【讨论】:

        【解决方案5】:

        基于IsmailS' comment 在 OSX 上为我工作的命令是:

        sudo sh ./startup.sh
        

        【讨论】:

          【解决方案6】:

          在 Windows 上输入 startupstartup.bat

          在 unix 上输入 ./startup.sh

          (假设你位于tomcat/bin目录)

          【讨论】:

            【解决方案7】:

            批处理文件可以在 Linux 上运行。本文解释了如何 (http://www.linux.org/threads/running-windows-batch-files-on-linux.7610/)。

            【讨论】:

              【解决方案8】:

              输入

              chmod 755 scriptname.sh
              

              换句话说,给你自己运行文件的权限。我猜你只有 r/w 权限。

              【讨论】:

              • 这不一定能解决问题。 @almel 报告的错误意味着 shell 搜索了 $PATH 环境变量给出的文件夹列表,但找不到“启动”文件。通过输入“./startup”,您将绕过该搜索并告诉外壳程序“在此文件夹中查找我要运行的脚本”
              【解决方案9】:
              1. 在您的 .sh 文件顶部添加 #!bin/bash
              2. sudo chmod +x 你的 .sh 文件
              3. ./your.sh 文件

              这些步骤有效~

              【讨论】:

                【解决方案10】:

                我的建议并非来自终端;但是,这是一种更简单的方法。

                对于 .bat 文件,您可以通过 Wine 运行它们。使用此视频来帮助您安装它:https://www.youtube.com/watch?v=DkS8i_blVCA。该视频将解释如何安装、设置和使用 Wine。这就像在 Wine 本身中打开 .bat 文件一样简单,并且它将像在 Windows 上一样运行。

                通过这个,您还可以运行 .exe 文件以及 .sh 文件。

                这比尝试计算各种终端代码要简单得多。

                【讨论】:

                  【解决方案11】:

                  我在优胜美地的 *.sh 文件中遇到了这个问题,无法弄清楚我桌面上文件夹的正确路径是什么……咬牙切齿之后,将文件本身拖到终端窗口中;嘿急!!

                  【讨论】:

                    猜你喜欢
                    • 2015-02-28
                    • 1970-01-01
                    • 2012-03-07
                    • 2020-05-09
                    • 1970-01-01
                    • 2010-10-24
                    • 1970-01-01
                    • 2020-03-09
                    相关资源
                    最近更新 更多