Como você omite “./” ao executar scripts no diretório atual

10

Em alguns tutoriais pela Internet, eles podem executar um script no diretório atual sem fazer:

./script

Como você omite isso? Estou usando o CentOS 5.6 x64. Eu quero executá-lo desta maneira

script

Aivan Monceller
fonte
3
Observe que isso quase sempre é uma má ideia, especialmente para o usuário root.
David Schwartz
1
Qual é o propósito / história por trás de ./?
Pete
Eu sou apenas curioso porque ele sempre precisa ter ./
Aivan Monceller
O último comentário pode ser uma pergunta separada IMHO - é uma coisa importante a entender sobre a execução de programas em geral!
rozcietrzewiacz
4
@Pete (e Aivan): no Linux / UNIX, o shell só executa programas se souber o caminho para eles (usando um caminho que você especificar ou pesquisando a variável PATH). Não pressupõe que você deseja pesquisar no diretório atual como o Windows faz. Ele pesquisa exatamente o que você pede para pesquisar através da variável PATH. '.' é uma referência ao diretório atual. Então, quando você digita './script.sh', está dizendo o caminho.
Kasius

Respostas:

26

Qualquer um de:

  1. Adicione o diretório de trabalho atual ao seu PATH: PATH=${PATH}:.(isso é considerado um risco de segurança)
  2. Adicione explicitamente o caminho que contém seu script à variável PATH (isso não representa um risco à segurança se o acesso de gravação a esse diretório for limitado)
  3. Coloque seu script no local apropriado para o qual PATH já aponta (~ / bin, / usr / local / bin, ...)

A última opção é possivelmente a melhor.

Nils
fonte