Erstellen eines Dotfile-Skripts

Erstellen eines Dotfile-Skripts

Ich habe das gefragtFragedrüben auf SO und bin nicht sehr weit gekommen; hier ist die aktuelle Version meines Skripts und was ich tun möchte. Ich suche nach Vorschlägen zum Debuggen und Testen. Ich werde es wahrscheinlich entfernen, -fnwährend ich weiter daran arbeite, da es einfach im Weg ist – ich musste Dateien in ein temporäres Verzeichnis und dann wieder zurück verschieben, damit irgendetwas funktioniert.

#!/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;

Antwort1

Um den Kommentar zu erweitern: Die abschließenden Backslashs führen dazu, dass die drei lnBefehle als eine Zeile behandelt werden. Das möchten Sie nicht. Sie möchten drei verschiedene Zeilen. Wenn ich also die drei Zeilen wiedergebe, werden sie wie folgt analysiert.

$ 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

Sie können sehen, dass die Ausgabe aller echoBefehle in einer Zeile aufgelistet ist. Das Entfernen der Backslashs verursacht dieses Verhalten nicht. Jeder Befehl wird separat behandelt.

verwandte Informationen