'#!/usr/bin/env bash' 与 #!/bin/bash 是否相同

'#!/usr/bin/env bash' 与 #!/bin/bash 是否相同

简单的问题,是一样的吗?当我写bash+ tab =>时,Vim 会自动完成我,#!/usr/bin/env bash但我通常#!/bin/bash在每个脚本中都观察。所以……

答案1

总结:

使用#!/usr/bin/env bash


长答案:

不,它们并不相同。第一种形式 ( #!/usr/bin/env bash)更好,因为当 Bash 在您的路径中但不在 中时,它将起作用。通常,两者都会起作用。但是,如果您的脚本在没有 Bash(或没有指向它的符号链接)的/bin系统上运行,则不会起作用,因为它不在该位置,但会起作用。/bin/bash#!/bin/bash#!/usr/bin/env bash

env在您的路径中查找命令,因此如果 Bash 在您的路径中但不在 中/bin,则需要使用env。实际上,由于相当多的脚本不使用env,操作系统倾向于创建/bin/bashBash 或指向它的符号链接。请注意有很小的可能性env不起作用如果您使用一些旧系统,但在任何相当现代的操作系统(Debian,Ubuntu,Arch,Fedora 等)上最好使用env

相关内容