我注意到对于bash
脚本,有些人使用不同的
舍邦到我习惯于把它放在我自己的顶部的那个。
有人可以简化这两者之间的区别吗?我#!/bin/bash
一直用这个。
#!/bin/bash
#!/usr/bin/env bash
答案1
脚本中的结果#!/usr/bin/env bash
使用首先在$PATH
.
虽然 bash 通常位于/bin/bash
.在某些情况下,情况并非如此(不同的操作系统)。另一个潜在的用途是当安装了多个 bash shell 时(较新的版本位于备用位置,例如/usr/local/bin/bash
)。
做#!/usr/bin/env bash
只是利用了效用的行为env
。
该env
实用程序通常用于在调用程序时操作环境(例如,env -i someprog
将环境擦除干净)。但是,除了要执行的程序之外,如果不提供任何参数,则会导致执行指定的程序,如 中所示$PATH
。
请注意,这样做既有优点也有缺点。
优点如前所述,如果 bash 安装在不同的位置,或者如果/bin/bash
bash 太旧而无法支持脚本尝试执行的操作,则它使脚本可移植。
缺点是您可能会出现不可预测的行为。由于您受到用户的支配$PATH
,因此可能会导致脚本运行时使用的 bash 版本的行为与脚本预期的不同。