O Bash não pode executar o comando a partir do script: comando mkdir não encontrado [fechado]

1

Eu tenho scripts separados para tarefas no bash. Aqui está o partido:

#!/bin/bash
PATH=/home/name/
mkdir $PATH
cd $PATH && echo "done."
exit 0

Hoje ele quebrou e pela primeira vez simplesmente não queria rodar o cd, mas criou o diretório. Segunda vez que acabou de dizer "comando mkdir não encontrado". Executar este comando exatamente com ponto-e-vírgula funciona bem. Qual é o caso?

    
por NapoleonTheCake 26.11.2016 / 07:38

2 respostas

4

PATH é uma variável de ambiente. É o que seu shell usa para encontrar os comandos que serão executados. Mais precisamente, a variável de ambiente PATH contém uma lista separada por vírgulas de nomes de diretório, que são pesquisados em sequência para um executável com o nome que você especifica ao digitar um comando. (A menos que o comando que você digita seja um shell embutido, alias ou função).

Quando você define PATH no seu script, você está "mascarando" o valor da variável de ambiente com a variável shell do mesmo nome.

O resultado disso é que não use todos os nomes maiúsculos para variáveis regulares do shell.

Como você não pretende uma variável de ambiente, basta usar um nome de variável em minúsculas.

Veja também:

por 26.11.2016 / 07:54
2

No bash, PATH é uma variável especial que informa ao bash onde procurar por programas instalados. A menos que você tenha um% binário mkdir em /home/name/ , ele deve gerar mkdir: command not found após PATH ter sido definido. Use um nome de variável diferente para corrigir esse problema.

    
por 26.11.2016 / 07:55