Создание скрипта dotfile

Создание скрипта dotfile

Я спросил этовопросна SO и не продвинулся далеко; вот текущая версия моего скрипта и то, что я хотел бы сделать. Предложения по отладке и тестированию — это то, что я ищу. Я, вероятно, удалю, -fnпока буду работать над этим, так как это только мешает — пришлось переместить файлы во временный каталог, а затем обратно, чтобы что-то заработало.

#!/bin/bash

set -e

function makeLinks() {
    ln -sfn ~/Documents/Dotfiles/.bash_profile ~/.bash_profile\
    ln -sfn ~/Documents/Dotfiles/.gitconfig ~/.gitconfig\
    ln -sfn ~/Documents/Dotfiles/.gitignore_global ~/.gitignore_global
    source ~/.bash_profile;
    }

    read -rp "This may overwrite existing files. Are you sure? (y/n) " -n 1;
    echo "";
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        makeLinks
    fi;

решение1

Расширяя комментарий: завершающие обратные косые черты приводят к тому, что три lnкоманды рассматриваются как одна строка. Вам это не нужно. Вам нужны три разные строки. Итак, когда я вывожу три строки, вот как они анализируются.

$ echo ln -sfn ~/Documents/Dotfiles/.bash_profile ~/.bash_profile\
>     ln -sfn ~/Documents/Dotfiles/.gitconfig ~/.gitconfig\
>     ln -sfn ~/Documents/Dotfiles/.gitignore_global ~/.gitignore_global
ln -sfn /cygdrive/d/home/prateek/Documents/Dotfiles/.bash_profile /cygdrive/d/home/prateek/.bash_profile ln -sfn /cygdrive/d/home/prateek/Documents/Dotfiles/.gitconfig /cygdrive/d/home/prateek/.gitconfig ln -sfn /cygdrive/d/home/prateek/Documents/Dotfiles/.gitignore_global /cygdrive/d/home/prateek/.gitignore_global

Вы можете видеть, что вывод всех echoкоманд перечислен в одной строке. Удаление обратных косых черт не приведет к такому поведению. Каждая команда будет обрабатываться отдельно.

Связанный контент