0
kernel=`uname -s`        # Current Kernel name
user=`whoami`            # Current Unix username
time=`date +%H:%M`       # Output current time
current_dir=$(pwd)       # Shell's current location
script_dir=$(dirname $0) # This script's current location

# This if statement is to know the correct location of the script, if the
# shell's location is the same as the script's location
if [ $script_dir = '.' ]; then
    script_dir="$current_dir"
fi

if [ $kernel == 'Linux' ]; then
    # Making symlinks to Vim files, add yours as you need
    echo 'Making symlinks to Vim files'
    ln -s -v $script_dir/vim /home/$user/.vim
    ln -s -v $script_dir/vim/vimrc /home/$user/.vimrc
    ln -s -v $script_dir/vim/gvimrc /home/$user/.gvimrc
    echo "Done at [$time]...\n"

    # Making symlinks to Zsh files, add yours as you need
    echo 'Making symlinks to Zsh files'
    ln -s -v $script_dir/zsh /home/$user/.zsh
    ln -s -v $script_dir/zsh/zshrc /home/$user/.zshrc
    echo "Done at [$time]...\n"

    # Making symlinks to Git files, add yours as you need
    echo 'Making symlinks to Git files'
    ln -s -v $script_dir/git/gitconfig /home/$user/.gitconfig
    ln -s -v $script_dir/git/gitmessage.txt /home/$user/.gitmessage.txt
    echo "Done at [$time]...\n"
fi

这在 Linux 中可以正常工作吗?我正在尝试创建一个make_symlinks.sh文件,所以我必须检查 Darwin(它已经可以工作),但是由于我没有要测试的 Linux 机器,我不知道这个脚本是否可以在 Linux 中工作。

那么,这行得通吗?谢谢你的帮助!

4

1 回答 1

1

您的脚本的修改版本给出:

kernel=Linux
user=david
time=23:04
current_dir=/home/david/SO/Test
script_dir=/home/david/SO/Test


修改后的脚本:

kernel=`uname -s`        # Current Kernel name
user=`whoami`            # Current Unix username
time=`date +%H:%M`       # Output current time
current_dir=$(pwd)       # Shell's current location
script_dir=$(dirname $0) # This script's current location

# This if statement is to know the correct location of the script, if     the
# shell's location is the same as the script's location
if [ $script_dir = '.' ]; then
    script_dir="$current_dir"
fi

if [ $kernel == 'Linux' ]; then
  echo "kernel=$kernel" 
  echo "user=$user" 
  echo "time=$time"
  echo "current_dir=$current_dir" 
  echo "script_dir=$script_dir" 
fi

你的ln命令会起作用:

NAME
       ln - make links between files

SYNOPSIS
       ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
       ln [OPTION]... TARGET                  (2nd form)
       ln [OPTION]... TARGET... DIRECTORY     (3rd form)
       ln [OPTION]... -t DIRECTORY TARGET...  (4th form)
#[...]
       -s, --symbolic
              make symbolic links instead of hard links

       -v, --verbose
              print name of each linked file
于 2012-11-22T04:02:18.027 回答