Questão Qualquer maneira de evitar pontos-barra ao executar scripts executáveis ​​no bash?


digamos que eu tenha um script.

chmod +x myscript

Agora, para correr isso eu vou

./myscript

Mas há alguma maneira que eu poderia apenas executá-lo digitando

myscript

???


4


origem


Qual sistema operacional (distro) você está usando? - ctrl-alt-delor


Respostas:


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 para o 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 o riscos de segurança de fazer isso.


4



Eu poderia sugerir colocar "." no final, ao invés do começo, do PATH. Pelo menos ajudaria com colisões de nomes. Felicidades. - pythonlarry


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

export PATH=$PATH:/path/to/directory

4





export PATH=/path_to_folder_containing_executable/:$PATH

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

Boa sorte!


1





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

ln -s /path_to_script/myscript /usr/bin/myscript 

1





Coloque o script em ~/bin, uma bin diretório em seu diretório inicial. Então verifique se ~/bin é adicionado ao seu PATH. Pode já ser (embora você possa ter que sair e voltar).

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

O mais óbvio. Se você definir o PATH para procurar . primeiro: então se um diretório a tem um arquivo executável ls isso 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 o PATH para procurar . last: Você então faz um programa chamado test, quando você executa nada parece acontecer (isso é porque ele está executando um test que tem maior prioridade 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, este novo software pode mascarar o 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 começo do PATH. ~ / bin / override` está quase vazio.


0



A razão pela qual um programa no seu PATH chamado test não corre é porque test é também o nome de um shell embutido. - garyjohn
@garyjohn sim, você vê porque isso pode ser um problema. - ctrl-alt-delor


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 shell") pode ser digitado

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

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

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


0