bash - 如何通过双击使该 file.sh 可执行?

标签 bash macos terminal executable

首先我使用的是 Mac。

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

cd /Users/Jacob/Documents/folderWithFileInIt
bash file.sh

这没关系,但我觉得如果我让文件双击执行的话会快很多,你不觉得吗?

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

我的想法是:

a) 在终端中输入 chmod 之类的内容并更改权限?

b)创建一个文件,将我上面编写的代码放入其中^然后使该文件可执行?

c)以某种方式实现自动化来做到这一点?

哪种方法最好,或者有更好的方法吗?

最佳答案

默认情况下,*.sh 文件在文本编辑器(Xcode 或 TextEdit)中打开。要创建一个打开终端时将在终端中执行的 shell 脚本,请使用“command”扩展名命名它,例如 file.command。默认情况下,这些文件会发送到终端,终端会将文件作为 shell 脚本执行。

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

chmod +x file.command

如果没有这个,终端将拒绝执行它。

请注意,在这种特定情况下,脚本不必以 #! 前缀开头,因为终端专门安排使用默认 shell 来执行它。 (当然,如果您想自定义使用哪个 shell,或者想确保在使用不同的 shell 时可以从命令行执行它,您可以添加 #! 行。)

另请注意,终端执行 shell 脚本时不会更改工作目录。如果您确实需要脚本在特定工作目录下运行,则需要使用 cd 命令开始脚本。例如。您可以使用 cd "$(dirname "$0")" 将当前工作目录设置为 shell 脚本所在的目录。

关于bash - 如何通过双击使该 file.sh 可执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8409946/

相关文章:

具有不区分大小写文件系统的 MacOS 上的 MySQL 区分大小写表名

android - 如何通过终端获取android模拟器列表?

bash - 远程主机(通过Cron的SSH)上捕获的命令输出为空

linux - Bash for 远程服务器上的循环

bash - OpenSSL 解密 AES 256 位(base64)加密密码 - 错误的最终 block 长度

linux - 在不同目录中查找具有相同名称的文件并计算重复项

objective-c - 上下文菜单中的自定义条目

linux - 从 stdout 读取特定字符串时终止 bash 进程

linux - 如何使用 PS1 变量在终端提示符中显示时间?

linux - 如果第 n 列包含特定单词,如何删除行?