Bash 如何从终端运行.sh或.bat文件?
我这里有一个非常基本的问题,它发生在我身上太随意了,直到现在,我都忽略了它。我下载了tomcat web服务器,“Murach的Java servlet和JSP”一书告诉我导航到tomcat/bin目录,并在终端中键入内容时启动服务器 $startup 然而,我得到了错误Bash 如何从终端运行.sh或.bat文件?,bash,tomcat,terminal,Bash,Tomcat,Terminal,我这里有一个非常基本的问题,它发生在我身上太随意了,直到现在,我都忽略了它。我下载了tomcat web服务器,“Murach的Java servlet和JSP”一书告诉我导航到tomcat/bin目录,并在终端中键入内容时启动服务器 $startup 然而,我得到了错误 -bash: startup: command not found 此目录中的相关文件是startup.sh和startup.bat。键入这两个选项将返回相同的错误消息 所以我的问题是,什么是.bat和sh文件,以及如何运行
-bash: startup: command not found
此目录中的相关文件是startup.sh和startup.bat。键入这两个选项将返回相同的错误消息
所以我的问题是,什么是.bat和sh文件,以及如何运行这些文件?我已经阅读了一些关于不同语言和软件程序的教程,有时当教程说在命令行中执行一堆文件时,我会收到一个“command not found”错误。有时有效,有时无效。这让我感到困惑,那么解决这种“未找到命令”终端问题的常见解决方案是什么呢?在windows上键入
startup
或startup.bat
在unix上键入/startup.sh
(假设您位于tomcat/bin目录中)该
.sh
用于*nix系统,而.bat
应用于Windows。因为您的示例显示了一个bash错误,并且您提到了终端,所以我假设您使用的是OSX
在这种情况下,您应该转到文件夹并键入:
./startup.sh
/
只是意味着您应该调用位于当前目录中的脚本。(或者,只需键入startup.sh
的完整路径)。如果无法运行,请检查startup.sh
是否具有执行权限。这是因为脚本不在$PATH中。使用
./scriptname
您还可以将其复制到$PATH中的一个文件夹中,或者更改$PATH变量,以便始终只使用脚本名称。不过,请注意,当前文件夹不在$PATH中是有原因的。这可能是一种安全风险
如果在执行脚本时仍然存在问题,您可能需要检查其权限-显然,您必须具有执行权限才能执行脚本。使用
chmod u+x scriptname
.sh
文件是Unix shell脚本。.bat
文件是Windows批处理文件。在linux终端中键入bash script\u name.sh
或/script\u name
。在使用/script\u name
之前,请通过sudo chmod 700 script\u name
执行脚本,并在windows中键入script\u name.bat
。拖放
对于像我这样懒惰的Mac用户来说,最简单的方法是:将startup.sh
文件从Finder拖放到终端窗口,然后按Return
要关闭Tomcat,请对shutdown.sh执行相同的操作
您可以删除所有.bat
文件,因为它们仅适用于Windows PC,在Mac和其他Unix计算机上没有任何用处。我删除了它们,因为这样更容易阅读该文件夹的列表
文件权限
我发现新的Tomcat下载不会在我的Mac上运行,因为文件权限限制会在启动时抛出错误。我使用BatChmod
应用程序,该应用程序围绕等效的Unix命令包装一个GUI,以重置文件权限
港口转运
Unix系统保护对1024以下端口的访问。因此,如果您想将端口80与Tomcat一起使用,您需要学习如何进行“端口转发”,将传入的请求转发到端口8080,Tomcat默认在端口8080上侦听。要进行端口转发,您需要向内置在Mac OS X(和)中的数据包过滤(防火墙)应用程序发出命令。在我们过去的日子里。在Mac OS X 10.7(Lion)和更高版本中,苹果正在转向一种更新的工具。批处理文件可以在Linux上运行。这篇文章解释了()的原因。我在约塞米蒂的*.sh文件中遇到了这个问题,无法确定桌面上文件夹的正确路径……在咬牙切齿之后,将文件本身拖到终端窗口中;嘿,普雷斯托 我的建议不是来自终端;然而,这是一个简单得多的方法
对于.bat文件,可以通过Wine运行它们。使用此视频帮助您安装:。本视频将介绍如何安装、设置和使用Wine。这就像在Wine中打开.bat文件一样简单,它将像在Windows上一样运行
通过此操作,您还可以运行.exe文件以及.sh文件
这比尝试编写各种终端代码要简单得多 输入
chmod 755 scriptname.sh
换句话说,给自己运行文件的权限。我猜您对它只有r/w权限。基于在OSX上为我工作的命令是:
sudo sh ./startup.sh
谢谢皮尔塞涅克斯的解释。我输入了你说的话,结果成功了!转到下一个安装问题。如果您的权限被拒绝,您可能需要执行sudo./startup.sh
运行sudo./scriptname.sh会由于某种原因导致“未找到命令”错误。请使用sh“sh/path/to/script”运行它。如果权限被拒绝,请使用“sudo”,这不一定能解决问题。@almel报告的错误意味着shell搜索了$PATH环境变量给定的文件夹列表,但找不到“启动”文件。通过放置“/startup”,您将绕过该搜索,并告诉shell“在该文件夹中查找我正在尝试运行的脚本”,感谢您的替代步骤chmod u+x scriptname
它修复了权限被拒绝的错误