gpt4 book ai didi

ruby - 在 Ruby 中导出环境变量

转载 作者:数据小太阳 更新时间:2023-10-29 06:23:38 25 4
gpt4 key购买 nike

如何将 Ruby 脚本中的环境变量导出到父 shell?例如,实现 read Bash 内置函数的简单实现:

#!/usr/bin/ruby

varname = ARGV[0]
ENV[varname] = STDIN.gets # but have varname exported to the parent process

最佳答案

您不能将环境变量导出到运行 ruby​​ 脚本的 shell,但是您可以编写一个 ruby​​ 脚本来创建一个源代码 bash 文件。

例如

% echo set_var.rb
#!/usr/bin/env ruby
varname = ARGV[0]
puts "#{varname}=#{STDIN.gets.chomp}"
% set_var.rb FOO
1
FOO=1
% set_var.rb BAR > temp.sh ; . temp.sh
2
% echo $BAR
2
%

另一种选择是使用 ENV[]= 为从 ruby​​ 进程中打开的子 shell 设置环境变量。例如:

outer-bash% echo pass_var.rb
#!/usr/bin/env ruby
varname = ARGV[0]
ENV[varname] = STDIN.gets.chomp
exec '/usr/bin/env bash'
outer-bash% pass_var.rb BAZ
quux
inner-bash% echo $BAZ
quux

如果您将它与 shell 的 exec 命令结合使用,这将非常有效,它将用 ruby​​ 进程替换外壳(这样当您退出内壳时,外壳会自动- 也退出,防止任何“我以为我在这个 shell 中设置了那个变量”的混淆)。

# open terminal
% exec pass_var.rb BAZ
3
% echo $BAZ
3
% exit
# terminal closes

关于ruby - 在 Ruby 中导出环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2660571/

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