Mic*_*ant 39 shell bash shebang
(有关Ubuntu-OSX 兼容性和易用性以及 POSIX,请参阅使用 #!/bin/sh 或 #!/bin/bash)
如果我希望我的脚本使用 bash shell,那么使用 .bash 扩展名实际上是调用 bash 还是依赖于系统配置/第一个 shebang 行。如果两者都有效但不同,哪个优先?
我不确定是否用 .sh 结束我的脚本以仅指示“shell 脚本”,然后让第一行选择 bash shell(例如#!/usr/bin/env bash
),或者是否只用 .bash 结束它们(以及第 1 行设置) )。我想调用 bash。
wur*_*tel 24
脚本的命名与它的运行方式无关。
shebang 行定义了用于运行脚本的解释器。
我个人并不关心脚本是 sh、bash、perl 还是什么,所以我只是根据它的作用来命名它;我发现添加扩展是多余的。file scriptname
如果我想知道,我会找出文件是什么。
所以,如果你希望你的脚本与运行bash
,使用#!/bin/bash
作为第一线。
Cit*_*ght 22
使用 .bash 扩展名实际上是调用 bash 还是取决于系统配置/第一个 shebang 行。
如果您没有明确使用解释器,那么被调用的解释器由shebang
脚本中使用的决定。如果您专门使用解释器,那么解释器并不关心您为脚本提供的扩展名。但是,扩展名的存在是为了让其他人非常清楚它是什么类型的脚本。
[sreeraj@server ~]$ cat ./ext.py
#!/bin/bash
echo "Hi. I am a bash script"
Run Code Online (Sandbox Code Playgroud)
看,.py
对 bash 脚本的扩展并没有使它成为 python 脚本。
[sreeraj@server ~]$ python ./ext.py
File "./ext.py", line 2
echo "Hi. I am a bash script"
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
它总是一个bash
脚本。
[sreeraj@server ~]$ ./ext.py
Hi. I am a bash script
Run Code Online (Sandbox Code Playgroud)