Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何从终端运行.sh或.bat文件?_Bash_Tomcat_Terminal - Fatal编程技术网

Bash 如何从终端运行.sh或.bat文件?

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文件,以及如何运行

我这里有一个非常基本的问题,它发生在我身上太随意了,直到现在,我都忽略了它。我下载了tomcat web服务器,“Murach的Java servlet和JSP”一书告诉我导航到tomcat/bin目录,并在终端中键入内容时启动服务器

$startup

然而,我得到了错误

-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
它修复了
权限被拒绝的错误