【发布时间】:2014-07-27 02:08:17
【问题描述】:
在 Ubuntu 14.04 上以 root 身份安装 Ruby 版本管理器 (RVM) 之后。我遇到了一种奇怪的 bash 行为。让我们看一下导出的环境变量。我以用户 ubunutu 登录并在我的 bash 中运行 export。以下是 rvm 导出的三个环境变量,其他可用:
declare -ax chpwd_functions='([0]="__rvm_cd_functions_set" [1]="__rvm_after_cd")'
declare -x rvm_version="1.25.28 (stable)"
declare -x rvm_ruby_mode
一切都很好,但是当我运行 bash -c export 时,我们只得到:
declare -x rvm_version="1.25.28 (stable)"
有人能解释一下为什么所有空的环境变量和所有数组都在子 bash 中被删除了吗?我必须怎么做才能确保父 shell 的所有环境变量在子 shell 中都可用?
这个问题对我来说真的是一个障碍。我正在使用 vagrant 及其外壳配置程序。在一个脚本中,我设置了 rvm,而在第二个脚本中,我必须配置一些 gemset。问题是在第二个脚本中 rvm 命令不运行。活动 shell 只获取 rvm 的那些环境变量,它们是非数组和非空的。手动采购rvm.sh 是没有办法的!
【问题讨论】:
标签: linux bash shell vagrant sh