31

我想将Oh My Zsh添加到我的 Vagrant 引导过程中,但直接安装不起作用。

通过卷曲:

curl -L http://install.ohmyz.sh | sh

通过 wget:

wget --no-check-certificate http://install.ohmyz.sh -O - | sh
4

3 回答 3

33

找到了解决方案:

# Added zsh shell.
sudo apt-get install zsh
wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh 
sudo chsh -s /bin/zsh vagrant
zsh

作为一个很好的补充,这样您的终端在不同的盒子上看起来不会太相似

# Change the oh my zsh default theme.
sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="3den"/g' ~/.zshrc
于 2014-09-10T10:27:58.187 回答
23

这是Vagrantfile在 Ubuntu 14.04.2 LTS 机器上安装 Oh My Zsh 并将其设置为标准vagrant用户的默认 shell 的完整程序。

这适用于 Vagrant 1.7.2。(您的里程可能因不同版本而异。)它使用自述文件的手动安装部分中的说明,而不是尝试使用自动脚本。

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # Pick a box to use:
  config.vm.box = "ubuntu/trusty64"

  ############################################################
  # Oh My ZSH Install section

  # Install git and zsh prerequisites 
  config.vm.provision :shell, inline: "apt-get -y install git"
  config.vm.provision :shell, inline: "apt-get -y install zsh"

  # Clone Oh My Zsh from the git repo
  config.vm.provision :shell, privileged: false,
    inline: "git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh"

  # Copy in the default .zshrc config file
  config.vm.provision :shell, privileged: false,
    inline: "cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc"

  # Change the vagrant user's shell to use zsh
  config.vm.provision :shell, inline: "chsh -s /bin/zsh vagrant"

  ############################################################


end

作为奖励,您可以使用以下方法将主机.zshrc文件一次性复制到 vagrant box:

config.vm.provision "file", source: "~/.zshrc", destination: ".zshrc"

(请记住,由于主机和 vagrant box 的设置之间的差异,您可能不得不考虑最初无法正常工作的事情。)

于 2015-07-02T21:39:26.663 回答
0

我来这里是因为有同样的问题。在看到一些答案并尝试之后,大部分zsh&oh-my-zsh被安装为root. 将root设置他$SHELLzsh。我想要的是它们作为用户安装vagrant。配置时引导由 root 完成。所以逻辑是尝试以用户身份运行安装zshoh-my-zsh。这是我在尝试了很多次之后所做的,直到我得到了我想要的:

## In Vagrantfile try to call bootstrap.sh
config.vm.provision "shell", path: "bootstrap.sh"
## This is the bootstrap.sh
aptInstl() {
  DEBIAN_FRONTEND=noninteractive apt-get install -qq -y $1 > /dev/null
}
install_zsh() {
  aptInstl "zsh"
  su -l vagrant -s "/bin/sh" \
    -c "curl -fsSO https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh; chmod 755 install.sh; ./install.sh --unattended"
  chsh -s /bin/zsh vagrant
}
install_miscellaneous() {
  apt-get update > /dev/null
  apt-get upgrade > /dev/null
  for i in curl git; do
    aptInstl "$i"
  done
}
main() {
  install_miscellaneous
  install_zsh
}
main

而且它工作得很好:)
当你完成后,vagrant ssh它会自动使用zshshell 和oh-my-zsh. 是完整的文件。

于 2021-06-23T02:46:40.957 回答