38

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

$启动

但是,我得到了错误

-bash: startup: command not found

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

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

4

11 回答 11

67

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

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

./startup.sh

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

于 2013-06-10T00:19:12.320 回答
15

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

./scriptname

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

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

chmod u+x scriptname

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

于 2013-06-10T00:21:24.287 回答
6

在 linux 终端中输入或bash script_name.sh./script_name在使用之前./script_name使您的脚本可执行并在 windows 中sudo chmod 700 script_name键入。script_name.bat

于 2014-07-07T10:32:32.897 回答
5

拖放

startup.sh对于像我这样懒惰的 Mac 用户来说,最简单的方法是:将文件从 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.

于 2014-09-27T07:30:19.363 回答
4

根据IsmailS 的评论,在 OSX 上对我有用的命令是:

sudo sh ./startup.sh
于 2019-05-10T07:40:54.713 回答
2

在 Windows 上键入startupstartup.bat

在 unix 类型上./startup.sh

(假设您位于 tomcat/bin 目录中)

于 2013-06-10T00:15:49.577 回答
1

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

于 2015-03-02T13:02:24.957 回答
1

输入

chmod 755 scriptname.sh

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

于 2017-11-16T14:25:23.587 回答
0
  1. 在 .sh 文件顶部添加 #!bin/bash
  2. sudo chmod +x 你的 .sh 文件
  3. ./your.sh 文件

这些步骤有效~

于 2021-08-05T07:13:28.270 回答
-1

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

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

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

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

于 2017-03-25T12:57:11.093 回答
-2

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

于 2015-08-16T18:52:09.010 回答