Um script de shell pode ser um comando global?

0

Verifique esta página: link

Como a documentação mencionada:

...
To uninstall VeraCrypt on Linux, you have to run the following command as root: veracrypt-uninstall.sh.
...

Quando eu digitei o comando sudo veracrypt-unistall.sh , no diretório home, ele fez o que deveria fazer (desinstalar o veracrypt). No entanto, até onde eu sei, se quisermos executar um script de shell, devemos estar no mesmo diretório que o script.

Agora aqui, há duas possibilidades:
Uma é que o script já estava em ~ ou Dois é que o script de shell ( veracrypt-uninstall.sh ) era um comando armazenado em algum lugar como: /bin ou /usr/bin .

Por outro lado, não encontrei nenhum script de shell chamado 'veracrypt-uninstall.sh' em meu diretório inicial, então como?

Atualização:
$ echo $PATH
Saída: /home/linuxbrew/.linuxbrew/bin /home/linuxbrew/.linuxbrew/bin /home/linuxbrew/.linuxbrew/sbin /usr/local/bin /usr/local/sbin /usr/bin /usr/sbin

    
por M.HosNS 20.11.2018 / 11:22

2 respostas

1

Sim, pode ser um comando global.

Não há diferença: um executável é um executável. Não importa em que idioma um executável é escrito (algumas linguagens podem fazer algumas coisas que outras não podem, mas ainda são executáveis). No Unix, o executável não deve ter uma extensão de arquivo: o .sh no final é apenas parte do arquivo, nada de especial. No entanto, ele diz ao chamador em qual idioma ele foi escrito e torna impossível alterar o idioma, sem atualizar todos os chamadores.

Scripts e programas são procurados procurando na variável $PATH . digite echo $PATH para obter uma lista de onde o sistema pesquisa ( sudo echo $PATH , para onde ele procura quando você é root). É o mesmo lugar quando se procura por não-scripts (como todos eles são executáveis).

Executando programas locais (no mesmo diretório)

Para executar algo que esteja no mesmo diretório, você precisa fazer ./«script-name» , a menos que alguém tenha, perigosamente, adicionado . ao PATH .

    
por 20.11.2018 / 11:34
0

Não tenho certeza de qual sabor do Gnu / Linux você está usando, mas aqui estão alguns ajudantes úteis e genéricos.

echo $PATH - fornecerá todos os caminhos que estão sendo procurados para scripts e binários. Tenha em mente que executar algo sob o sudo é fazer isso como uma pessoa diferente, então " sudo echo $PATH " pode ter resultados diferentes.

Em alguns sistemas operacionais, o root tem acesso a comandos que os usuários não têm.

whereis veracrypt-unistall.sh e sudo whereis veracrypt-unistall.sh podem mostrar o caminho se conhecido, também alguns sistemas possuem o comando which.

which veracrypt-unistall.sh

se você tiver top ou htop instalado, tê-lo aberto enquanto o script estiver sendo executado permitirá que você veja o caminho completo na coluna de comando

    
por 20.11.2018 / 11:29