#! /bin/sh # alt - setup alternatives symlink for file/directory $1 # for switching between two systems. # Assume other root mounted at /other, /etc/alternatives/$USER is # writable. If $1 exists, assume it belongs to OTHER system. # If it does not exist, create a directory. set -ex this=$(lsb_release -sir | tr '[\n\t ]' '-') other=$(sudo chroot /other lsb_release -sir | tr '[\n\t ]' '-') target=$1 if test ! -e .$other$target -a ! -L .$other$target; then if test ! -L $target -a ! -e $target; then mkdir $target fi mv $target .$other$target fi if test -f .$other$target; then cp -dpv .$other$target .$this$target elif test -d .$other$target -a ! -L .$other$target; then mkdir -p .$this$target fi alternative=$target$(pwd |tr '/' '-') ln -s $(pwd)/.$this$target /etc/alternatives/$USER/$alternative ln -s $(pwd)/.$other$target /other/etc/alternatives/$USER/$alternative ln -s /etc/alternatives/$USER/$alternative $target