Sourcing .bashrc do ssh após remover a verificação da cadeia de prompt

3

Eu tenho um arquivo .bashrc que precisa ser obtido de forma não interativa. O problema é que no arquivo há essa declaração de retorno impedindo o fornecimento por código:

[ -z "$PS1" ] && return 

Para superar isso sem modificar o arquivo .bashrc remoto eu cat o arquivo, grep esta linha e source como abaixo:

user@host -t "
  source <( echo \"\$(cat /home/release/.bashrc | grep -v \"return\")\" ); 
  alias v; 
  v"

P.S: Se eu tivesse .bash_profile como resultado, os resultados seriam os mesmos como se eu não tivesse conseguido nada.

O que eu acho estranho é que se eu declarar um apelido assim:

alias v='cat somefile'

e, em seguida, execute estes dois comandos como anteriormente:

alias v;
v;

Eu recebo a seguinte saída para cada:

alias v='cat somefile'
bash: v: command not found

A minha pergunta é: se puder ver que existe um alias definido, porque não reconhecerá o comando?

    
por Alan 03.03.2016 / 15:28

1 resposta

3

Da página bash man

Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt

quando você executa um script de shell, como você sabe, ele gera outro subshell, executa seu script nesse shell e retorna a saída para o shell atual. Então, o script está sendo executado em um shell não interativo.

Embora eu não recomende, você pode alterar esse comportamento usando o seguinte comando:

 shopt -s expand_aliases
 alias v='cat somefile'
 v

e você deve ver funcionando. O conselho contra o uso vem das pessoas ficarem preguiçosas e tomarem as coisas como garantidas a tempo e esquecerem o que elas fizeram. E deus proíba se você precisa dar as rédeas de seus sistemas para o novo administrador de sistema quando você se move para pastos mais verdes. Provavelmente a pobre alma não terá ideia do que você fez e atirar no próprio pé. Meu conselho é seguir princípios de operação simples e amplamente conhecidos / aceitos em vez de ambientes altamente personalizados.

    
por 03.03.2016 / 16:36