什么是env在Bash什么?
发布时间:2020-12-15 18:39:01 所属栏目:安全 来源:网络整理
导读:当我使用 Bash(在Cygwin下)时,我得到这个行为: $printf 'u00d5'u00d5$env printf 'u00d5' # This results in the behavior I want? 在终端中使用UTF-8或ISO-8859-1编码无关紧要. 我的问题是:env做什么?为什么在这种情况下需要它? env不在bash中,它是
当我使用
Bash(在Cygwin下)时,我得到这个行为:
$printf 'u00d5' u00d5 $env printf 'u00d5' # This results in the behavior I want ? 在终端中使用UTF-8或ISO-8859-1编码无关紧要. 我的问题是:env做什么?为什么在这种情况下需要它?
env不在bash中,它是一个独立的可执行文件,它用于在运行程序之前设置或清除环境变量.在你特定的情况下,它运行二进制printf而不是shell内置.您可以通过使用绝对路径实现相同的结果:
/usr/bin/printf 'u00d5' 最简单的方法可能是以下几点:重新定义printf函数,并将Bash处理其余部分.源文件包含以下内容: function printf() { $(which printf) "$@" } 或作为单行函数printf(){$(which printf)“$@”; }.当然,您可以将/usr/bin/printf的$(which printf)替换为 然后简单地使用printf,就像以前一样.您的脚本保持不变,您甚至可以引入一个条件来定义仅在某些Bash版本上的功能. AFAIK你也可以省略这个功能,但是我发现它增加了可读性. [编辑:功能关键字是一个bash扩展名; printf(){…; }是POSIX语法.如果你使用了function关键字,函数名后面的()可以是可选的. 通常,env也用于努力移植的脚本的哈希行.原因是env几乎总是在/usr/bin/env,而bash并不总是在/ bin / bash,因为hash-bang行意味着很多.例: #!/usr/bin/env bash 也适用于其他程序/口译员: #!/usr/bin/env python (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |