【发布时间】:2015-04-19 16:09:55
【问题描述】:
我正在制作一个 shell 脚本来安装 Apache、MySQL、Postgresql、php5、rvm、ruby 和 rails,有点像自动安装脚本,但是我的 rvm 源代码和所有这些都有问题,这就是我所拥有的到目前为止:
autoinstall autoconf automake bison build-essential curl git-core libapr1 libaprutil1 libc6-dev libltdl-dev libreadline6 libreadline6-dev libsqlite3-0 libsqlite3-dev libssl-dev libtool libxml2-dev libxslt-dev libxslt1-dev libyaml-dev ncurses-dev nodejs openssl sqlite3 zlib1g zlib1g-dev
autoinstall git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev
autoinstall libgdbm-dev libncurses5-dev automake libtool bison libffi-dev
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable --ruby
# Load RVM into a shell session *as a function*
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
# First try to load from a user install
source "$HOME/.rvm/scripts/rvm"
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
# Then try to load from a root install
source "/usr/local/rvm/scripts/rvm"
else
printf "ERROR: An RVM installation was not found.\n"
fi
type rvm | head -1
rvm -v
这个脚本到达 type rvm | head -1 并说 rvm: not found,我怀疑这是一个奇怪的情况,必须关闭所有 bash 终端并重新打开,因为 if 也到达了 printf "ERROR: An RVM installation was not found.\n" 但是当我的脚本退出时我再次这样做type rvm | head -1 并显示安装正确。
任何想法为什么会在我的 shell 脚本中发生这种情况?
[编辑]: 我确保它一直运行到源代码行,那个不工作的似乎是 rvm 脚本的源代码,以便能够在 shell 脚本中使用 rvm,当我检查 rvm 版本时出现错误,但在终端它给出我一个版本,为什么?
【问题讨论】:
-
不存在“必须关闭所有 bash 终端的情况”。那不是存在的东西。他们不互动。对 shell 启动文件的更改不会影响现有的 shell 会话,但会立即影响任何新的会话。
-
顶级脚本在哪个 shell 中运行?
-
我只是将 shell 运行为:
sudo sh installwebtools.sh,我的 rvm 脚本基于此链接 rvm Scripting@Etan Reisner -
我只是将 shell 运行为:sudo sh installwebtools.sh,我在此链接 rvm Scripting @EtanReisner 中将我的脚本作为 rvm 的基础
-
您试图明确获取does not run in
sh(和其他shell)的文件可能是因为它们缺少它所依赖的功能。尝试改用sudo bash。 (链接页面上没有任何地方显示sudo sh。)