Vagrant执行命令行用户级

Vagrant执行命令行用户级,vagrant,ubuntu-16.04,Vagrant,Ubuntu 16.04,在使用vagrant构建VM时,您是否可以帮助我在用户级别执行命令?具体来说,我正在尝试更新Ubuntu屏幕左侧的“启动器图标”。在下面的文件中,我尝试在内联shell和内联脚本中实现这一点。如果您能提供任何帮助,我将不胜感激 $script = <<SCRIPT echo "Configuring Launcher Icons..." gsettings set com.canonical.Unity.Launcher favorites "['applicatio

在使用vagrant构建VM时,您是否可以帮助我在用户级别执行命令?具体来说,我正在尝试更新Ubuntu屏幕左侧的“启动器图标”。在下面的文件中,我尝试在内联shell和内联脚本中实现这一点。如果您能提供任何帮助,我将不胜感激

$script = <<SCRIPT
    echo "Configuring Launcher Icons..."
    gsettings set com.canonical.Unity.Launcher favorites "['application://org.gnome.Nautilus.desktop', 'application://chromium-browser.desktop', 'unity://running-apps', 'application://terminator.desktop', 'unity://expo-icon', 'unity://devices']"
    service lightdm restart
SCRIPT

Vagrant.configure(2) do |config|
    config.vm.box = "box-cutter/ubuntu1604-desktop"

    config.vm.provider "virtualbox" do |vb|
        # Display the VirtualBox GUI when booting the machine
        vb.gui = true
        vb.name = "UpdateLauncherIcons"

        # Customize the amount of memory on the VM:
        vb.memory = "4096"
    end

    config.vm.provision "shell", inline: <<-SHELL
        # Update OS
        apt-get update
        apt-get upgrade
        apt-get --yes install git
        apt-get --yes install terminator
        apt-get --yes install chromium-browser

        gsettings set com.canonical.Unity.Launcher favorites "['application://org.gnome.Nautilus.desktop', 'application://chromium-browser.desktop', 'unity://running-apps', 'application://terminator.desktop', 'unity://expo-icon', 'unity://devices']"
        service lightdm restart

    SHELL

    config.vm.provision "shell", inline: $script

end
进一步的测试证实,当在终端窗口内的来宾计算机中执行以下命令时,该命令工作良好。同样,挑战是从主机上执行的vagrantfile中获取该命令

gsettings set com.canonical.Unity.Launcher favorites "['application://org.gnome.Nautilus.desktop', 'application://chromium-browser.desktop', 'unity://running-apps', 'application://terminator.desktop', 'unity://expo-icon', 'unity://devices']"

很久没有使用Ubuntu桌面漫游框了,但是我们团队项目中的一个类似设置使用“privileged:false”作为shell provisioner:

config.vm.provision "shell", privileged: false, path: "scripts/setup-desktop.sh"
config.vm.provision "shell", privileged: false, path: "scripts/configure-desktop.sh"
以及设置自动登录的设置脚本

echo "autologin-user=vagrant" | sudo tee -a /etc/lightdm/lightdm.conf

# restart desktop
sudo service lightdm restart
接下来的配置脚本将使用一些autostart功能来运行它

#!/bin/bash

#modify shortcuts on ubuntu cause that are used in eclipse
cat <<AUTOSTART_SHORTCUTS | sudo tee /home/vagrant/bin/modify-shortcuts
#!/bin/sh
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-down []
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-up []
#Disable Resize window (Alt + F8)
gsettings set org.gnome.desktop.wm.keybindings begin-resize []
#Disable move window (Alt + F7)
gsettings set org.gnome.desktop.wm.keybindings begin-move []

AUTOSTART_SHORTCUTS
sudo chmod 777 /home/vagrant/bin/modify-shortcuts

cat <<GSETTINGS | sudo tee /home/vagrant/bin/setup-unity
#!/bin/sh
# set favourites in launcher
gsettings set  com.canonical.Unity.Launcher favorites "['application://nautilus.desktop', 'application://gnome-terminal.desktop', 'application://firefox.desktop', 'application://chromium-browser.desktop', 'application://gvim.desktop', 'application://IDEA.desktop']"

# set german keyboard
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'de'), ('xkb', 'us')]"

#Disabling screensaver
#gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
gsettings set org.gnome.desktop.session idle-delay 0

# disable screensaver locking desktop
gsettings set org.gnome.desktop.screensaver lock-enabled false

# cleanup
sudo rm -f /home/vagrant/.config/autostart/setup-unity.desktop
GSETTINGS
sudo chmod 777 /home/vagrant/bin/setup-unity

mkdir -p .config/autostart

cat <<AUTOSTART_SHORTCUTS_DT | sudo tee /home/vagrant/.config/autostart/modify-shortcuts.desktop
[Desktop Entry]
Type=Application
Exec=/home/vagrant/bin/modify-shortcuts
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=modify-shortcuts
Name=modify-shortcuts
Comment[en_US]=
Comment=
AUTOSTART_SHORTCUTS_DT
cat <<GSETTINGS_DT | sudo tee /home/vagrant/.config/autostart/setup-unity.desktop
[Desktop Entry]
Type=Application
Exec=/home/vagrant/bin/setup-unity
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=setup-unity
Name=setup-unity
Comment[en_US]=
Comment=setup-unity
GSETTINGS_DT

# restart desktop
sudo service lightdm restart
#/bin/bash
#修改eclipse中使用的ubuntu上的快捷方式

cat
sudo-u vagrant
在您的内联供应器中。@CodeGnome我尝试了您的建议并使用:
sudo-u vagrant gsettings set com.canonical.Unity.Launcher favorites“['application://org.gnome.Nautilus.desktop', 'unity://running-apps“,”美联社plication://terminator.desktop', 'unity://expo-icon', 'unity://devices“]”
但是,我仍然在运行vagrantfile的主机终端内收到错误消息:
==>默认:(进程:5495):dconf严重**:无法创建目录“/root/.cache/dconf”:权限已取消。dconf无法正常工作。
您还有其他建议吗?为什么要创建任何根目录?流浪用户通常是
vagrant
ubuntu
,默认情况下使用sudo以root用户身份运行。我想您可能需要进一步解释一下您正在处理的权限和位置,因为这显然是一个权限问题。@CodeGnome我不是有意创建任何根目录;我只是试图利用vagrant生成一个可复制的环境(参见我最初发布的vagrant文件)。我不明白为什么从vagrantfile执行
gettings set…
命令时不起作用,但在来宾计算机上执行时效果很好。如果您能提供进一步的指导和/或帮助,我将不胜感激。非常感谢您花时间查找和发布此信息。我试着使用你所有的建议,但没有成功。我希望shell provisioner的“privileged:false”是关键,但似乎我仍然缺少一些东西。
#!/bin/bash

#modify shortcuts on ubuntu cause that are used in eclipse
cat <<AUTOSTART_SHORTCUTS | sudo tee /home/vagrant/bin/modify-shortcuts
#!/bin/sh
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-down []
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-up []
#Disable Resize window (Alt + F8)
gsettings set org.gnome.desktop.wm.keybindings begin-resize []
#Disable move window (Alt + F7)
gsettings set org.gnome.desktop.wm.keybindings begin-move []

AUTOSTART_SHORTCUTS
sudo chmod 777 /home/vagrant/bin/modify-shortcuts

cat <<GSETTINGS | sudo tee /home/vagrant/bin/setup-unity
#!/bin/sh
# set favourites in launcher
gsettings set  com.canonical.Unity.Launcher favorites "['application://nautilus.desktop', 'application://gnome-terminal.desktop', 'application://firefox.desktop', 'application://chromium-browser.desktop', 'application://gvim.desktop', 'application://IDEA.desktop']"

# set german keyboard
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'de'), ('xkb', 'us')]"

#Disabling screensaver
#gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
gsettings set org.gnome.desktop.session idle-delay 0

# disable screensaver locking desktop
gsettings set org.gnome.desktop.screensaver lock-enabled false

# cleanup
sudo rm -f /home/vagrant/.config/autostart/setup-unity.desktop
GSETTINGS
sudo chmod 777 /home/vagrant/bin/setup-unity

mkdir -p .config/autostart

cat <<AUTOSTART_SHORTCUTS_DT | sudo tee /home/vagrant/.config/autostart/modify-shortcuts.desktop
[Desktop Entry]
Type=Application
Exec=/home/vagrant/bin/modify-shortcuts
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=modify-shortcuts
Name=modify-shortcuts
Comment[en_US]=
Comment=
AUTOSTART_SHORTCUTS_DT
cat <<GSETTINGS_DT | sudo tee /home/vagrant/.config/autostart/setup-unity.desktop
[Desktop Entry]
Type=Application
Exec=/home/vagrant/bin/setup-unity
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=setup-unity
Name=setup-unity
Comment[en_US]=
Comment=setup-unity
GSETTINGS_DT

# restart desktop
sudo service lightdm restart