Script de shell continua criando links simbólicos quebrados

0

Estou tentando gerenciar meus arquivos de ponto dentro de um subdiretório de $ HOME e escrever um script de shell que configure links simbólicos dentro de $ HOME.

#!/bin/sh

for i in .cvsignore .gitconfig .npmrc .tmux.conf .zprofile .zshrc; do
    ln -s $i ~/$i
done

por alguma razão, este script continua produzindo links simbólicos quebrados.

file {~/*,~/.*} | grep "broken symbolic link" | cut -d: -f1

/home/user/.cvsignore
/home/user/.gitconfig
/home/user/.npmrc
/home/user/.tmux.conf
/home/user/.zprofile
/home/user/.zshrc
    
por Philippe 02.10.2017 / 09:10

2 respostas

1

Os links simbólicos serão quebrados porque serão parecidos com

.cvsignore -> .cvsignore

etc.

Quando você cria um link simbólico com

ln -s source target

o target será um link simbólico que aponta para source exatamente da maneira como você o escreveu.

Então, o que está faltando é o caminho para a fonte (aqui estou usando a variável $PWD que contém o caminho absoluto para o diretório atual):

ln -s "$PWD/$i" "$HOME/$i"

Na maioria das vezes, um está localizado no diretório target ao criar o link:

ln -s some/dir/where/the/file/is mylink

O link (o caminho para o qual o link aponta) deve ser absoluto ou ser relativo ao local do link.

    
por 02.10.2017 / 09:22
0

Você está no mesmo diretório (ou seja, home daquele usuário)? Se sim, estaria ligando para si mesmo ...

Se você estiver em um diretório diferente, precisará especificar o caminho completo para o destino.

    
por 02.10.2017 / 09:17