我使用了@Artem S. Tashkinov 建议的脚本:“这是我为自己编写的,但它在控制台上运行。 ”
$sh raw_io.sh:
20: shopt: not found
raw_io.sh:
48: declare: not found
raw_io.sh:
61: Syntax error: redirection unexpected
我发现我只需要使其可执行并双击它,然后“在终端中运行”:
由于它令人耳目一新,我无法复制/粘贴输出。所以我做了一个屏幕截图:
由于它通过双击工作,但我需要单击“在终端中运行”,我也想知道如何从终端直接启动它。
~/Desktop$ raw_io
raw_iso: command not found
那么这些启动方式有什么区别呢?
你如何执行一个名为的脚本
myscript
?等等
这很容易,但您确实需要知道使用哪个解释器来运行脚本,正如您所注意到的,尝试使用错误的解释器会产生错误(例如,使用
sh
而不是bash
)。更好的方法是让脚本自己声明正确的解释器。这是使用
#!
第一行定义的。例如,这一行将声明bash
(特别是/bin/bash
)作为解释器:要使用此功能,您需要使脚本可执行,
然后只要它位于中指定的冒号分隔目录列表之一中,
$PATH
您就可以像运行任何其他程序一样运行它 - 仅使用其名称但是,请注意当前目录(标记为
.
)不在,$PATH
因此如果您正在当前目录中处理脚本,则需要提供脚本的路径以便可以找到它。这里的.
代表当前目录,它是相对于你当前工作目录的路径(即同一个地方):.
通常不在 中有充分的理由$PATH
,但如果您必须添加它,则将其放在末尾$PATH
而不是开头。(请参阅History of UNIX not including current directory in $PATH和Why is . not in the path by default?。)请注意,脚本名称或扩展名并不重要(除非您最终使用的命令名称
test
已经存在于 中列出的系统目录中$PATH
)。我在myscript
这里用作示例。如果你愿意,你可以使用myscript.sh
,甚至confusion.png
,但你不使用ls.exe
,所以我认为没有必要myscript.sh
。但是请注意,某些 GUI 可能会使用文件扩展名来猜测文件中的内容,并且以非标准方式(例如png
脚本)使用扩展名可能会使它们感到困惑。GUI 识别文件内容的正确方法是使用与file
命令等效的方法,但并非所有命令都这样做:最后,当我完成要重用的脚本时,我倾向于将它放入我的
$PATH
.ls
然后它就变成了一个像或一样容易访问的工具cp
。在我的例子中,我使用$HOME/bin
但你可以选择任何你喜欢的目录,只要它在$PATH
.