Por que algum servidor requer './' para executar scripts, mas outros não?

3

Estou me perguntando por que alguns servidores Ubuntu são diferentes.

Eu tenho dois servidores Ubuntu 12.04 que estão executando um aplicativo da web. Hoje eu tentei rodar um arquivo sh da sua pasta. O servidor 1 pode executar o shell sem ./ mas o servidor 2 exige isso. Ambos têm permissão 777.

    
por Batbayar 19.09.2014 / 11:12

1 resposta

9

Normalmente os scripts / programas na pasta atual não são executados no linux / unix.

Scripts / programas são executados somente quando o script / programa pode ser encontrado na variável $PATH .

Portanto, quando o caminho não está incluído na variável $PATH , você precisa fornecer o caminho para o script / programa para executá-lo. Para executar um script / programa na pasta atual, você deve prefixar com ./ , que denota a pasta currect.

Verifique se a variável $PATH nos dois servidores é a mesma.

Com base no seu comentário sobre a variável $PATH , suspeito que um dos scripts esteja em uma pasta encontrada pela variável $PATH , enquanto o outro está em outra pasta.

Atenção

Não é uma boa idéia incluir ./ no seu $PATH . Desta forma, um usuário pode criar um comando malicioso (como ls ) e guiá-lo para a pasta onde ele o salva. Em seguida, você executará a versão local em vez do comando do sistema (se a pasta atual for colocada em $PATH before /bin ).

    
por Uwe Plonus 19.09.2014 / 11:39