Por que só posso executar um arquivo .sh no diretório pai, não no diretório filho?

3

Percebi que isso não funciona:

/tomcatDirectory/bin $ startup.sh //command not found

mas isso funciona

/tomcatDirectory $ bin/startup.sh

Estou acostumado com o Windows. Parece contra-intuitivo para mim que eu não posso executar um programa a partir do seu diretório de trabalho, apenas a partir da pasta pai.

Qual é o quadro maior do que está acontecendo aqui?

    
por bernie2436 13.02.2013 / 14:54

2 respostas

5

O diretório atual (por exemplo, . ) não está em seu caminho. Experimente com

./startup.sh

Você pode verificar seu caminho com

echo ${PATH}

Você poderia adicionar o diretório atual ( . ) ao seu caminho, mas isso é considerado um risco (especialmente se . estiver antes de outros diretórios): ao digitar um comando, o shell primeiro tente executá-lo no diretório atual. Isto irá executar o que existe ao invés do padrão .

Resumindo: basta iniciar executáveis no diretório atual com ./ na frente deles.

    
por 13.02.2013 / 15:00
0

Porque "startup.sh" realmente não parece um caminho para o arquivo e você não tem . em sua variável de ambiente PATH. Mas ainda assim você pode iniciá-lo como ./startup.sh

    
por 13.02.2013 / 15:01