Como é o caminho para um conjunto executável se o script estiver em PATH [duplicado]

2

Suponha que eu tenha um script my.sh colocado dentro de /var/www e eu adicionei esse diretório a uma variável PATH env. Agora posso executar ./my.sh em qualquer parte do sistema. Dentro do script, $0 é igual a /var/www/my.sh . Como isso é construído? É simplesmente o caminho no PATH mais o nome do script?

    
por Max Koretskyi aka Wizard 24.01.2017 / 08:31

3 respostas

2

$0 é o nome do processo em execução.

Portanto, quando você chamar o script com ./script.sh , o processo que será executado será /bin/bash ./script.sh , então $0 retornará ./script.sh , então chame o script com caminho relativo em vez de seu caminho absoluto, mas , quando você colocar o script no diretório que PATH olha dentro, a chamada será com o caminho absoluto e o retorno de $0 será /usr/bin/script.sh porque o processo é /bin/bash /usr/bin/script.sh

    
por 24.01.2017 / 08:49
2

$0 não se importa com o seu $PATH , é um parâmetro especial para o Bash.

$0 expands to the name of the shell or shell script. This is set at shell initialization. If bash is invoked with a file of commands, $0 is set to the name of that file. It is often used to display script usage message

Leia mais sobre $0 aqui .

    
por 24.01.2017 / 08:35
-1

Espero que isso ajude

PATH='/var/www/my.sh'
echo $PATH

quando você executar o script, o resultado será

/var/www/my.sh

    
por 24.01.2017 / 08:35