gpt4 book ai didi

ruby-on-rails - 如何使 Ruby 与 bash 兼容

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:50:16 25 4
gpt4 key购买 nike

我有一个使用 open3 从脚本内部运行 shell 命令的 ruby​​ 脚本,我使用的是 Ubuntu 18.04 和 bash。

当我运行该脚本时,它会产生诸如 0: sh: 2: pushd: not found 之类的错误。我搜索了一下,发现的一件事是 https://stackoverflow.com/a/17044484/5553963这建议我们使用 ENV["SHELL"] = "/bin/bash" 但是当我检查我的环境变量时我已经有了:

$ printenv "SHELL"
/bin/bash

如何让这个脚本在我的机器上运行?

该脚本的第一部分:

#!/usr/bin/env ruby

require 'open3'

def run(i, cmd)
res = ""
Open3.popen3(cmd) do |stdin, stdout, stderr, thread|

我的 ruby​​ 版本:ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]

最佳答案

假设您想要 shell 内置 pushd,您需要在系统命令中显式调用 bash,因为 ruby​​ 不引用您的 $SHELL 变量。像这样的东西:

require 'open3'
require 'shellwords'
Open3.popen3("bash -c #{Shellwords.escape(cmd)}")

应该可以解决问题。

关于ruby-on-rails - 如何使 Ruby 与 bash 兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56158878/

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