Create symlink to where VMware Fusion stores VM images, use this symbolic path instead default spacey path. On my OSX dev machine that folder is $HOME/Virtual\ Machines.localized
.
# symlink path $HOME/vms
ln -s Virtual\ Machines.localized vms
mkdir $HOME/vmware-fusion
# add an export to .bashrc or .zshrc
export VMWARE_FUSION_HOME=$HOME/vmware-fusion
Another symlink to VMWare Fusion's Library folder for easy access to binaries.
cd $VMWARE_FUSION_HOME
ln -s /Applications/VMware\ Fusion.app/Contents/Library lib
# add the lib folder to your PATH in .bashrc or .zshrc
export PATH=$VMWARE_FUSION_HOME/lib:$PATH
# vms symlink
cd $HOME
ls -al
lrwxr-xr-x 1 corbs vms -> Virtual Machines.localized
# lib symlink
cd $VMWARE_FUSION_HOME
corbs@corbspro:~/vmware-fusion|⇒ ls -al
lrwxr-xr-x 1 corbs lib -> /Applications/VMware Fusion.app/Contents/Library
cd $VMWARE_FUSION_HOME
mkdir bin
cd bin
# create vm script (see below) then set perms
chmod u+x vm
vm
start/stop script
#!/bin/bash
function start {
${VMWARE_FUSION_HOME}/lib/vmrun start ~/vms/${1}.vmwarevm/${1}.vmx nogui
}
function stop {
${VMWARE_FUSION_HOME}/lib/vmrun stop ~/vms/${1}.vmwarevm/${1}.vmx nogui
}
function list {
${VMWARE_FUSION_HOME}/lib/vmrun list
}
function suspend {
${VMWARE_FUSION_HOME}/lib/vmrun suspend ~/vms/${1}.vmwarevm/${1}.vmx nogui
}
function pause {
${VMWARE_FUSION_HOME}/lib/vmrun pause ~/vms/${1}.vmwarevm/${1}.vmx nogui
}
function unpause {
${VMWARE_FUSION_HOME}/lib/vmrun unpause ~/vms/${1}.vmwarevm/${1}.vmx nogui
}
function reset {
${VMWARE_FUSION_HOME}/lib/vmrun reset ~/vms/${1}.vmwarevm/${1}.vmx nogui
}
function usage {
echo "-----------------------------------------------------------------------------"
echo "Usage - options are: start | stop | suspend | pause | unpause | reset | list"
echo "-----------------------------------------------------------------------------"
}
if [ $# -lt 1 ]; then
usage
exit 1
fi
case "$1" in
start)
if [ $# -lt 2 ]; then
echo "Usage: vm start [name-of-vm]"
exit 1
fi
echo "starting vm ${2}..."
start ${2}
;;
stop)
if [ $# -lt 2 ]; then
echo "Usage: vm stop [name-of-vm]"
exit 1
fi
echo "stopping vm ${2}..."
stop ${2}
;;
suspend)
if [ $# -lt 2 ]; then
echo "Usage: vm suspend [name-of-vm]"
exit 1
fi
echo "suspend vm ${2}..."
suspend ${2}
;;
pause)
if [ $# -lt 2 ]; then
echo "Usage: vm pause [name-of-vm]"
exit 1
fi
echo "pause vm ${2}..."
pause ${2}
;;
unpause)
if [ $# -lt 2 ]; then
echo "Usage: vm unpause [name-of-vm]"
exit 1
fi
echo "unpause vm ${2}..."
unpause ${2}
;;
reset)
if [ $# -lt 2 ]; then
echo "Usage: vm reset [name-of-vm]"
exit 1
fi
echo "reset vm ${2}..."
reset ${2}
;;
list)
echo "listing vms..."
list
;;
*)
usage
exit 1
esac
corbs@corbspro:~/vmware-fusion/bin|⇒ ./vm start ubuntu-dev1
starting vm ubuntu-dev1...
corbs@corbspro:~/vmware-fusion/bin|⇒ ./vm stop ubuntu-dev1
stopping vm ubuntu-dev1...
Optionally set $VMWARE_FUSION_HOME/bin on your path to run the vm
script from anywhere on your box.
export PATH=$VMWARE_FUSION_HOME/lib:$VMWARE_FUSION_HOME/bin:$PATH