Saída de onda canalizada (.)

4

Eu tenho um arquivo f no meu servidor com o seguinte conteúdo:

alias ll='ls -l'

Eu gostaria de (a partir de outra caixa linux) fazer o seguinte, mas não consigo acertar o comando:

curl http://myserver/f | ?

Onde o? lerá cada linha no ambiente atual. Então, dado o arquivo acima, isso teria o mesmo efeito que fazer

% alias ll='ls -l'

no processo de shell atual. Isso é possível?

    
por g33kz0r 14.07.2011 / 02:29

3 respostas

7

Que tal usar eval "$(curl "$URL")" ?

Mas é melhor você ter certeza de obter o URL correto, e o código baixado não faz nada desagradável.

    
por 14.07.2011 / 07:51
4

No Bash, você pode tentar acessar /dev/stdin depois de redirecionar a saída do comando curl para /dev/stdin em uma única linha da seguinte forma:

source /dev/stdin  <<< "$(curl http://myserver/f)"

Isso deve evitar a atribuição de variáveis (originadas) em um subshell (que seria invisível pelo shell pai).

    
por 14.07.2011 / 10:41
1

Para evitar problemas desagradáveis com eval , você pode salvá-lo em um arquivo e, em seguida, fornecê-lo:

curl -O f http://myserver/f
chmod u+x f
. f
    
por 14.07.2011 / 10:05