Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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 如何通过双击使此file.sh可执行?_Bash_Macos_Terminal_Executable - Fatal编程技术网

Bash 如何通过双击使此file.sh可执行?

Bash 如何通过双击使此file.sh可执行?,bash,macos,terminal,executable,Bash,Macos,Terminal,Executable,首先,我用的是Mac电脑 接下来,我需要执行这个file.sh,我们将调用它。每次需要执行时,我都必须打开终端并键入: cd /Users/Jacob/Documents/folderWithFileInIt bash file.sh 这没关系,但我觉得如果我让文件双击执行会快得多,你不觉得吗 所以我的问题是,如何通过双击使这个文件可执行 我的想法是: 在终端中键入类似chmod的内容并更改权限 b制作一个文件,把我上面写的代码放进去^然后让这个文件可执行 c以某种方式实现自动化来实现这一点

首先,我用的是Mac电脑

接下来,我需要执行这个file.sh,我们将调用它。每次需要执行时,我都必须打开终端并键入:

cd /Users/Jacob/Documents/folderWithFileInIt
bash file.sh
这没关系,但我觉得如果我让文件双击执行会快得多,你不觉得吗

所以我的问题是,如何通过双击使这个文件可执行

我的想法是:

在终端中键入类似chmod的内容并更改权限

b制作一个文件,把我上面写的代码放进去^然后让这个文件可执行

c以某种方式实现自动化来实现这一点

哪种方法最好,或者有更好的方法吗?另外,请尽可能多地解释,我是航站楼的新手。谢谢。

默认情况下,*.sh文件在文本编辑器Xcode或TextEdit中打开。要创建打开时将在终端中执行的shell脚本,请将其命名为“command”扩展名,例如file.command。默认情况下,它们被发送到终端,终端将以shell脚本的形式执行文件

您还需要确保文件是可执行的,例如:

chmod +x file.command
否则,终端将拒绝执行它

请注意,脚本不必以!在这个特定场景中使用前缀,因为终端专门安排使用默认shell执行它。当然,你可以添加一个!如果要自定义所使用的shell,或者如果要确保在使用其他shell时可以从命令行执行它,请使用


还要注意的是,终端在不更改工作目录的情况下执行shell脚本。如果您确实需要在特定的工作目录下运行脚本,则需要使用cd命令开始脚本。

您可以告诉Finder在终端中打开.sh文件:

选择文件 获取cmd-i信息 在“打开方式”部分,在弹出菜单中选择“其他…” 选择终端作为应用程序
这与将其重命名为命令的效果完全相同,只是……您不必重命名它:

完全删除扩展名,然后双击它。大多数系统shell脚本都是这样的。只要它有一个合适的位置,它就会工作

发射终端 键入->nano文件名 粘贴批处理文件内容并保存 键入->chmod+x文件名 它将创建exe文件,现在您可以双击它。 文件名应该在双引号下。 因为我在本例中使用的是Mac->,所以批处理文件的内容是

cd/Users/yourName/Documents/SeleniumServer

java-jar selenium-server-standalone-3.3.1.jar-role hub


它肯定会工作的

您可以像这样使用chmod来更改文件的可执行文件

chmod 755 file.sh
并使用此命令执行

./file.sh

如果您想要一个好的、易于单击的脚本,那么是的,Automator是正确的工具。你似乎从你的问题中了解到了这一点,那么你的问题是什么?同样的问题,但我有jdk dmg,一些用于创建图标的应用程序文件夹,一些Jar..但是我无法通过automator或.command运行/创建。感谢您提供了更有用的答案。您还可以使用cd`dirname$0`将当前工作目录设置为shell脚本所在的目录。出于美观的原因,您还应该右键单击.command文件并打开信息。在这里,你可以选择隐藏名称和后缀下的后缀。我使用此方法通过open-n运行应用程序。。。命令它可以工作,但每次终端窗口打开并显示[进程已完成]。有没有可能以某种方式阻止终端窗口的出现?@Nik如果你不想让它出现在终端窗口中,在终端中运行它是没有意义的。相反,将其作为一个应用程序包,其可执行文件是shebang脚本。或者制作一个运行脚本的AppleScript或Automator小程序。您还可以使用终端首选项更改配置文件,以便在进程退出时关闭窗口,但如果您只想在没有用户交互的情况下运行shell脚本,则这不是最佳解决方案。顺便说一句,shebang主要是在任何行前面的这一行:/bin/sh但它可以不同,请阅读其他情况下提供的链接。这种方法不需要执行chmod吗?欢迎使用!您的答案不会对已接受的答案添加任何内容。请解释为什么这与已经存在的其他答案不同。