Quando executo o seguinte script no zsh, ambos $0
e $0:P
me dão a mesma saída: /Users/john/scripts/test123.sh
.
#!/bin/zsh
echo script\'s path: $0
echo absolute path: $0:P
echo parent folder: $0:h
echo filename: $0:t
echo filename w/o extension: $0:t:r
echo extension: $0:t:e
Mas por que isso? Não é que, como :P
força o caminho absoluto ( de acordo com a documentação do zsh ), se :P
não for usado, o caminho deve ser relativo, por exemplo ~/scripts/test123.sh
?
Para executar o script, primeiro eu o torno executável: chmod a+rx test123.sh
e então clico duas vezes nele ou uso a linha de comando. O sistema operacional é macOS.
$0
contém o nome pelo qual o shell (script) foi chamado, sem modificação:A descrição
:P
no manual é :Então,
:P
modificaria claramente qualquer um dos dois primeiros. O último pode permanecer o mesmo, a menos que qualquer um deUsers
,ilkka
,tmp
oushellname.sh
fossem realmente links simbólicos, em cujo caso eles seriam resolvidos.