linux - Virtualbox 启动挂载不会卸载

标签 linux bash virtualbox unmount

如果您在 VirtualBox 客户机上使用 NetBeans,我认为这里有一个非常有用的脚本。 似乎有一个问题:

如果您查看该脚本,它会写入一个启动脚本,然后将 NetBeansProjects 从主机系统装载到 guest 系统。这很好用。但是,会创建一个附加脚本并将其移动到用户本地 bin。实际上,创建了两个脚本:1) 允许用户挂载和 2) 卸载已挂载的文件夹以提供灵 active 。

我测试了脚本,除了“netbeans-unmount.sh”脚本外,一切都在我的 Ubuntu 虚拟机上运行。

它不会卸载在启动时安装的目录,我已经尝试为脚本文件提供“root”访问权限...

关于这是否会起作用以及如何起作用的任何线索? :

#!/bin/bash
#Author: Yucca Nel http://thejarbar.org
#Will restart system
PATH="/sbin:/usr/sbin:/bin:/usr/bin"
export PATH

#Modify these variables as needed...
tempWork=/tmp/work
startupScript=/etc/init.d/rc.local
defaultNetBeansVersion=7.0.1

echo "Provide NetBeans version (7.0.1 is default) then hit [Enter] :"
  read NetBeansVersion

  if [ -z "$NetBeansVersion" ]
    then
    $NetBeansVersion=$defaultNetBeansVersion
  fi

mkdir -p /$tempWork;
cd /$tempWork;

wget http://dlc.sun.com.edgesuite.net/netbeans/7.0.1/final/bundles/netbeans-$NetBeansVersion-ml-javase-linux.sh;
sh $tempWork/*sh;


#Add Netbeans launcher to your PATH. Doing so allows you to run 'netbeans' command from the terminal
#This line will need to be changed if you changed the default install location (IOW Netbeans is not in ~/)
sudo ln -f -s ~/netbeans-$NetBeansVersion/bin/netbeans /usr/bin/;

#If you use VirtualBox , you can share your projects between Host and guest. Name of shared
#folder must match 'NetBeansProjects'
mkdir -p $HOME/NetBeansProjects

if [ -f /sbin/mount.vboxsf ]
then
    sudo /sbin/umount /home/$HOME/NetBeansProjects
    sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects
fi

if mountpoint -q ~/NetBeansProjects
then
#Add it to the universal start script to automate process...
    sudo sed -ie '$d' $startupScript
    echo "sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects"| sudo tee -a $startupScript
    echo "exit 0"| sudo tee -a $startupScript
    sudo chmod +x $startupScript

#Create a mount and unmount script file and add it to users local bin
    rm -rf $tempWork/*
    echo '#!/bin/bash' > $tempWork/netbeans-mount.sh
    echo '#!/bin/bash' > $tempWork/netbeans-umount.sh
    echo '#!/bin/bash' > $tempWork/mount-from-host.sh
    echo '#!/bin/bash' > $tempWork/unmount-from-host.sh
    echo "sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects" >> $tempWork/netbeans-mount.sh
    echo "sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects" >> $tempWork/mount-from-host.sh
    echo "sudo umount $HOME/NetBeansProjects" >> $tempWork/netbeans-umount.sh
    echo "sudo umount $HOME/NetBeansProjects" >> $tempWork/unmount-from-host.sh
    echo "exit 0" >> $tempWork/unmount-from-host.sh
    echo "exit 0" >> $tempWork/mount-from-host.sh
    echo "exit 0" >> $tempWork/netbeans-mount.sh
    echo "exit 0" >> $tempWork/netbeans-umount.sh

    sudo chmod +x $tempWork/*
    sudo mv -f $tempWork/*.sh /usr/local/bin
    rm -rf $tempWork
fi

#This function is used to cleanly exit with an error code.
function error_exit {
    sleep 7
    exit 1
}
#restart
sudo reboot
exit 0

更新:终端中的手动编码卸载也无法卸载 NetBeans 项目文件夹。所以我想我需要问一下,如果系统初始化安装了这个文件夹,是否有可能卸载这个文件夹?

更新 2:仍然卡住,但在查看 etc/mtab 后我有一些新信息。 这是我看到的:

...
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0
...

很明显,我必须多次运行 sudo unmount ~/NetBeansProjects!!

'f-l-a-t' 等其他挂载选项也不起作用,因为它会卸载所有内容,而我只想卸载我的目标目录。

最佳答案

您可以卸载所有共享:

sudo umount -a -t vboxsf 

或者使用 fusermount -u

sudo fusermount -u /mnt

关于linux - Virtualbox 启动挂载不会卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8852590/

相关文章:

linux - skb->priority 和 IP::tos 和 ping -Q

windows - 如何通过 PuTTy 使用命令行将文件从 Windows 机器上传到 Linux 机器?

linux - linux下perl的基本聊天系统

arrays - 当数组包含空格时bash

linux - 为什么 bash 源命令执行 $* 中的任何剩余参数

linux - Sudo 使错误 : make:*** [prepare-compiler-check] Error 1

linux - vncconfig 无法在启动时自动工作

Bash 数组变量 : [@] or [*]?

virtualbox - 无法从外部访问 8000 上的 OpenStack 的 Horizo​​n 仪表板

vagrant virtualbox 磁盘无故增大