gpt4 book ai didi

linux - 在/usr/bin/env 中设置环境变量在 Linux 上挂起进程

转载 作者:太空狗 更新时间:2023-10-29 12:12:11 30 4
gpt4 key购买 nike

虽然 man for env 在 Linux 上似乎表明您可以在执行命令之前设置新的环境变量。不幸的是,当我在 Linux 系统上的文件 shebang 中设置新变量时,该文件永远不会执行。

#!/usr/bin/env VAR1=foo bash
echo $VAR1

当我在 CentOS 或 Ubuntu 机器上执行这个文件时,它就在那里。

$ ./shell-env.sh
<nothing happens>

我发现特别奇怪的是,这在带有 BSD env 的 OS X 上运行得非常好。

$ ./shell-env.sh
foo
$

这只是 BSD env 和 Linux env 之间的区别吗?为什么 Linux 的手册页似乎说它应该以与 BSD 相同的方式工作?

附言我在这里的用例是覆盖 PATH 变量,因此我可以尝试在系统上找到 ruby 但它不在 PATH 上。

提前致谢!

最佳答案

有一种方法可以在执行 Ruby 脚本之前操纵环境,而无需使用某种包装脚本,但它并不漂亮:

#!/bin/bash
export FOO=bar
exec ruby -x "$0" "$@"

#!ruby
puts ENV['FOO']

这通常用于需要操纵的深奥情况,例如PATHLD_LIBRARY_PATH 执行程序之前,由于某些原因需要自包含。它适用于 Perl,也可能适用于其他人!

关于linux - 在/usr/bin/env 中设置环境变量在 Linux 上挂起进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39283594/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com