Os namespaces e scripts de rede parecem quebrar $ PATH [duplicado]

0
    

Esta pergunta já tem uma resposta aqui:

    
  •              Como fazer o 'sudo' preservar o $ PATH?                                      7 respostas                          
  •     

Assuma o seguinte script:

$ cat test.sh
#!/bin/bash
echo $PATH

Isso acontece:

$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/<user>/.local/bin:/home/<user>/bin
$ sudo ip netns exec blue echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/<user>/.local/bin:/home/<user>/bin
$ ./test.sh
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/<user>/.local/bin:/home/<user>/bin
$ sudo ip netns exec blue ./test.sh
/sbin:/bin:/usr/sbin:/usr/bin

Por quê? Está quebrando meu ecossistema de scripts porque significa que eles não podem ver muitos de meus binários.

Fora das duas distribuições que testei, o Fedora 24 é o único que faz isso. O Ubuntu 14.04 ecoa todos os $PATH s da mesma forma que eu esperava.

Eu tentei adicionar ao script

$ sudo ip netns exec blue PATH=$PATH

Mas isso equivale a erros, presumivelmente porque PATH=etcetc não é realmente um comando.

Qual é a maneira correta de fazer isso?

    
por Yd Ahhrk 20.09.2016 / 19:11

1 resposta

0

Você sempre pode fazer duas coisas: Use o nome completo do comando, portanto, não há dúvidas. Em qualquer um dos meus scripts, eu especificamente defino a variável PATH dentro do script para evitar problemas com modificações externas no ambiente (ou seja, seja independente do ambiente). Esta parece ser uma boa prática geral de qualquer maneira.

    
por 20.09.2016 / 20:00