Você pode obter o caminho completo como:
realpath "$0"
E como apontado por Serg você pode usar dirname
para remover o nome do arquivo como este
dirname "$(realpath $0)"
ou melhor ainda para evitar citações inconvenientes e divisão de palavras com nomes de arquivo difíceis:
temp=$( realpath "$0" ) && dirname "$temp"
Muito melhor do que a minha ideia anterior que era analisá-la (eu sabia que haveria uma maneira melhor!)
realpath "$0" | sed 's|\(.*\)/.*||'
Notas
-
realpath
retorna o caminho real de um arquivo -
$0
é esse arquivo (o script) -
s|old|new|
replaceold
comnew
-
\(.*\)/
salva todos os caracteres antes de/
para mais tarde -
da parte salva