Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
下载Bash脚本的可下载Bash脚本_Bash_Shell_Curl - Fatal编程技术网

下载Bash脚本的可下载Bash脚本

下载Bash脚本的可下载Bash脚本,bash,shell,curl,Bash,Shell,Curl,我正在努力实现开发虚拟机的自动配置。它做了一些基本的事情: 设置公司代理 更新apt get并安装一组库 安装VirtualBox来宾添加 安装RBEnv、一些插件和Ruby 2.2 其余的资源调配将由一些ruby脚本管理,这就是为什么ruby是这个脚本的最后一步 我将这些内容分解成单独的脚本,通过运行 curl some.host/proxy.sh | bash 因此,为了实现在空白虚拟机上进行单命令资源调配的梦想,我尝试制作如下内容: curl some.host/proxy.sh | ba

我正在努力实现开发虚拟机的自动配置。它做了一些基本的事情:

  • 设置公司代理
  • 更新apt get并安装一组库
  • 安装VirtualBox来宾添加
  • 安装RBEnv、一些插件和Ruby 2.2
  • 其余的资源调配将由一些ruby脚本管理,这就是为什么ruby是这个脚本的最后一步

    我将这些内容分解成单独的脚本,通过运行

    curl some.host/proxy.sh | bash

    因此,为了实现在空白虚拟机上进行单命令资源调配的梦想,我尝试制作如下内容:

    curl some.host/proxy.sh | bash
    source ~/.bashrc
    curl some.host/apt.sh | bash
    curl some.host/guest_additions.sh | bash
    curl some.host/development_base.sh | bash
    
    代理脚本(这将成功完成):

    apt命令

    sudo apt-get update
    sudo apt-get install -y build-essential git-core libxml2 libxml2-dev libxslt1-dev dkms linux-headers-generic linux-headers-$(uname -r) zlib1g-dev libssl-dev tklib
    
    来宾添加(此操作从不运行)

    Ruby(这个永远不会运行)

    这非常有效,直到客户添加脚本

    apt get安装需要几分钟,完成后,脚本就停止了。它从不尝试出去获取/运行下一个脚本

    正确的方法是什么

    编辑:

    好的,有很多评论,我会尽量在这里而不是评论中提及

  • 你的脚本实际上在做什么
  • 这一点很公平,我已经在上面加上了。我认为,可能仅仅是下载和执行其他脚本的脚本的想法是不正确的,或者脚本本身会有一些警告,因此我最初没有包括脚本,以避免在问题中涉及太多细节

  • 当它停止时会发生什么 它不会停滞,persay,它只是表现得好像客户添加和开发人员基线不存在一样

  • 为什么不请厨师或别的什么

  • 我可能会考虑在某个时候使用puppet或其他东西,但现在我不想这样做。

    当脚本完全运行时会发生什么?那剧本是干什么的?这组命令在何处/何时运行?这取决于它停止的原因,而复制则取决于此处未显示的细节。您使用的是
    set-e
    还是错误陷阱?这个脚本本身的stdin是否被子进程吃掉?(如果这是
    apt get install
    ,例如,运行它
    …无论如何,您需要为我们构建一个复制器来提供帮助。这种问题取决于细节;实际上没有复制问题的伪代码没有多大帮助。听起来您想使用类似Chef的东西。或者这是Chef r的一部分ecipe?同意以上所有内容。您还可以在
    guest\u additions.sh
    中添加
    set-vx
    ,并查看暂停时执行的命令。祝您好运。
    sudo apt-get update
    sudo apt-get install -y build-essential git-core libxml2 libxml2-dev libxslt1-dev dkms linux-headers-generic linux-headers-$(uname -r) zlib1g-dev libssl-dev tklib
    
    source ~/.bashrc
    guest_additions_iso=VBoxGuestAdditions_4.3.28.iso
    wget --directory-prefix=$HOME http://dlc-cdn.sun.com/virtualbox/4.3.28/$guest_additions_iso
    sudo mount -o loop $HOME/$guest_additions_iso /mnt
    sudo /mnt/VBoxLinuxAdditions.run
    sudo umount -f /mnt
    rm $HOME/$guest_additions_iso
    
    git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
    git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
    git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash
    export PATH="$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH"
    if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
    rbenv install 2.1.5
    rbenv global 2.1.5
    gem install bundler