Criando um script dotfile

Criando um script dotfile

Eu perguntei issoperguntano SO e não fui muito longe; aqui está a versão atual do meu script e o que eu gostaria que fizesse. Sugestões para depuração e teste são o que estou procurando. Provavelmente irei remover -fnenquanto estiver trabalhando nisso, pois isso apenas atrapalha - tive que mover os arquivos para um diretório temporário e depois voltar para que qualquer coisa funcionasse.

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

Responder1

Para expandir o comentário: as barras invertidas fazem com que os três lncomandos sejam tratados como uma linha. Você não quer isso. Você quer três linhas diferentes. Então, quando eu ecoo as três linhas aqui é como elas são analisadas.

$ 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

Você pode ver como a saída de echotodos os comandos está listada em uma linha. Remover as barras invertidas não causará esse comportamento. Cada comando será tratado separadamente.

informação relacionada