summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xLink-Them24
1 files changed, 19 insertions, 5 deletions
diff --git a/Link-Them b/Link-Them
index d27920d..19a9c28 100755
--- a/Link-Them
+++ b/Link-Them
@@ -1,15 +1,29 @@
-#!/bin/sh
+#!/bin/bash
set -e
cd "`dirname $0`"
-DATE="`date +'%Y%m%d'`"
-DIR="`pwd`"
+date="`date +'%Y%m%d'`"
+dir="`pwd`"
+if [ "$dir" = "$HOME" ]; then
+ relpath=""
+else
+ relpath="${dir##$HOME/}/"
+fi
for file in bash_profile bashrc screenrc vimrc zshrc zshfunc; do
+ if [ -L "$HOME/.$file" ]; then
+ if [ "$(readlink "$HOME/.$file")" = "$dir/$file" ]; then # old style symlink, remove
+ rm -v -f "$HOME/.$file"
+ fi
+ fi
if ! [ -L "$HOME/.$file" ]; then
- [ -e "$HOME/.$file" ] && mv "$HOME/.$file" "$HOME/.$file-$DATE"
- ln -s "$DIR/$file" "$HOME/.$file"
+ if [ -e "$HOME/.$file" ]; then
+ mv "$HOME/.$file" "$HOME/.$file-$date"
+ elif [ -L "$HOME/.$file" ]; then # dangling symlink
+ rm -f "$HOME/.$file"
+ fi
+ ln -v -s "$relpath$file" "$HOME/.$file"
fi
done