$0
dentro de um script é o nome do script.
No prompt, é o nome do shell, que provavelmente é -bash
no seu caso.
dirname
está tratando o traço principal como introduzindo uma opção de linha de comando, -b
, que ele não suporta.
- O código que você está usando não funcionará no prompt. Você pode colá-lo dentro de um arquivo e executar o arquivo.
- Experimente
dirname -- $0
: a maioria dos comandos permite escrever--
para tratar tudo o que segue como parâmetros em vez de opções. Nesse caso, isso não corrigirá o problema, mas deverá deixar claro qual é o problema.