这个脚本会在Linux中运行吗?

时间:2012-11-22 03:44:10

标签: linux shell kernel

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中。

那么,这有用吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分: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