Alguma maneira de evitar pontos-barra ao executar scripts executáveis no bash?

4

digamos que eu tenha um script.

chmod +x myscript

Agora, para executar isso, eu vou

./myscript

Mas existe alguma maneira de poder executá-lo digitando

myscript

???

    
por foreyez 24.07.2015 / 22:21

6 respostas

4

Eu tive o mesmo problema e parece não responder até agora responde à pergunta claramente.

A solução para a questão é adicionar export PATH=.:$PATH ao seu .bash_profile . Isso incluirá o diretório atual no caminho de busca do Unix enquanto ele procura pelo comando. Também é aconselhável ter-se informado sobre os riscos de segurança ao fazê-lo.

    
por 18.10.2016 / 13:20
4

adicione o caminho do diretório onde seu script está localizado para a variável PATH:

export PATH=$PATH:/path/to/directory
    
por 24.07.2015 / 22:28
1
export PATH=/path_to_folder_containing_executable/:$PATH

Se você não quiser executar isso toda vez que abrir um novo terminal, sempre poderá adicionar essa linha ao seu ~/.bashrc .

Boa sorte!

    
por 25.07.2015 / 00:31
1

crie um link simbólico do arquivo de script em qualquer / bin /, / usr / bin etc.

ln -s /path_to_script/myscript /usr/bin/myscript 
    
por 25.07.2015 / 06:54
0

Coloque o script em ~/bin , um diretório bin em seu diretório pessoal. Em seguida, verifique se ~/bin foi adicionado ao seu PATH . Pode já ser (embora você tenha que sair e voltar).

Você pode alterar seu PATH para incluir . , mas isso é perigoso. Isso pode levar a problemas de segurança. E.G.

O mais óbvio. Se você definir PATH para procurar . primeiro: se um diretório a tiver um arquivo executável ls que faz algo ruim. Então você digita cd a; ls . Então algo de ruim acontece.

Eu só consigo lembrar de um caso de conveniência. Se você definir PATH para procurar em . last: Você cria um programa chamado test ; quando você executa, nada parece acontecer (isso é porque ele está executando um test que tem prioridade mais alta e não tem saída , apenas um código de saída). Também pode haver um problema, se um novo software for instalado, esse novo software pode mascarar seu programa (embora este não seja diferente de ter ~/bin no final do PATH).

Eu tenho que diretórios em minha casa: ~/bin no final do PATH e ~/bin/override no início do PATH. ~ / bin / override 'está quase vazio.

    
por 24.07.2015 / 23:11
0

Todas as outras respostas postadas antes desta estão corretas. (Apesar aqueles que não mencionam ~/.bashrc estão incompletos a esse respeito.) Mas, se você preferir não usá-los, aqui está uma alternativa:

Tipo:

alias myscript="/path_to_folder_containing_executable/myscript"

ou

myscript() { /path_to_folder_containing_executable/myscript "$@"; }

O segundo (que é chamado de "função de shell") pode ser digitado

myscript() {
        /path_to_folder_containing_executable/myscript "$@"
}

se você preferir. Todos eles definem myscript como um tipo especial de comando que é verificado antes do shell olhar para $PATH .

Como os comandos export nas outras respostas, isso afeta apenas a sessão atual do shell. Para tornar o efeito persistente, coloque o comando em seu ~/.bashrc .

    
por 25.07.2015 / 06:11