我这里有一个非常基本的问题,这对我来说是偶然发生的,直到现在,我才忽视它。我下载了tomcat web服务器,“Murach的Java Servlets和JSP”一书告诉我导航到tomcat / bin目录并启动我在终端输入的服务器
$ startup
然而,我收到错误
-bash: startup: command not found
此目录中的相关文件是startup.sh和startup.bat。键入这两个都会返回相同的错误消息
所以我的问题是,什么是.bat和sh文件,以及如何运行这些文件?我已经阅读了几个不同语言和软件程序的教程,有时当教程说在命令行中执行一堆文件时,我收到“命令未找到”错误。有时候它有效,有时则不然。这对我来说很困惑,那么解决这些“命令未找到”终端问题的常用解决方案是什么?
答案 0 :(得分:48)
.sh
适用于* nix系统,.bat
适用于Windows。由于您的示例显示了bash错误,并且您提到了Terminal,我假设它是您正在使用的OS X.
在这种情况下,您应该转到该文件夹并输入:
./startup.sh
./
只是意味着你应该调用当前目录中的脚本。 (或者,只需键入startup.sh
的完整路径)。如果它不起作用,请检查startup.sh
是否具有执行权限。
答案 1 :(得分:9)
这是因为脚本不在$ PATH中。使用
./scriptname
您也可以将其复制到$ PATH中的一个文件夹或更改$ PATH变量,这样您就可以始终只使用脚本名称。但请注意,您的当前文件夹不在$ PATH中是有原因的。这可能存在安全风险。
如果您仍然无法执行脚本,则可能需要检查其权限 - 显然,您必须具有执行权限才能执行它。使用
chmod u+x scriptname
.sh
文件是Unix shell脚本。 .bat
文件是Windows批处理文件。
答案 2 :(得分:6)
在linux终端中键入bash script_name.sh
或./script_name
。在使用./script_name
之前,您可以通过sudo chmod 700 script_name
使脚本可执行并在Windows中键入script_name.bat
。
答案 3 :(得分:3)
像我这样的懒惰Mac用户最简单的方法:将startup.sh
文件从Finder拖放到终端窗口,然后按Return键。
要关闭Tomcat,请对shutdown.sh
执行相同操作。
您可以删除所有.bat
个文件,因为它们仅适用于Windows PC,在Mac上不能用于其他Unix计算机。我删除了它们,因为它更容易阅读该文件夹的列表。
我发现由于文件权限限制在启动期间抛出错误,我的Mac上无法运行全新的Tomcat下载。我使用BatChmod
应用程序围绕equivelant Unix命令包装GUI来重置文件权限。
Unix系统保护对1024以下端口的访问。因此,如果要将端口80与Tomcat一起使用,则需要了解如何进行“端口转发”以将传入请求转发到默认情况下Tomcat侦听的端口8080。要进行端口转发,您可以向Mac OS X(和BSD)内置的数据包过滤(防火墙)应用程序发出命令。在过去,我们使用ipfw
。在Mac OS X 10.7(Lion)和更高版本中,Apple正在转向更新的工具pf
。
答案 4 :(得分:2)
在Windows上输入startup
或startup.bat
在unix类型./startup.sh
(假设您位于tomcat / bin目录中)
答案 5 :(得分:1)
输入
chmod 755 scriptname.sh
换句话说,请允许自己运行该文件。我猜你只有r / w权限。
答案 6 :(得分:0)
批处理文件可以在Linux上运行。本文介绍了如何(http://www.linux.org/threads/running-windows-batch-files-on-linux.7610/)。
答案 7 :(得分:0)
基于IsmailS' comment,在OSX上对我有用的命令是:
sudo sh ./startup.sh
答案 8 :(得分:0)
这些步骤有效~
答案 9 :(得分:-1)
我在优胜美地的* .sh文件中遇到了这个问题,并且无法弄清楚桌面上某个文件夹的正确路径...在咬牙切齿之后,将文件拖入终端窗口;嘿presto !!
答案 10 :(得分:-2)
我的建议不是来自终端;然而,这是一种更容易的方式。
对于.bat文件,您可以通过Wine运行它们。使用此视频可帮助您安装它:https://www.youtube.com/watch?v=DkS8i_blVCA。本视频将介绍如何安装,设置和使用Wine。它就像在Wine中打开.bat文件一样简单,它将像在Windows上一样运行。
通过这个,您还可以运行.exe文件以及.sh文件。
这比尝试计算各种终端代码要简单得多。