Use isso:
#!/bin/bash
echo "hello world"
a='~'
b="$a/nlu"
echo $b
-
Não use
$para atribuições. -
b='$a/nlu'- Expressões como$anão se expandem entre aspas simples, use aspas duplas para isso. -
Como apontado por @steeldirver
./test.sh: line 4: =$a/nlu: No such file or directoryé o resultado de$bexpandir para nada, pois a atribuição não foi feita corretamente e, em seguida,bashtenta executar=$a/nlucomo um comando. Exatamente o mesmo para./test.sh: line 3: =~: command not foundse aplica.
Para erros futuros, use shellcheck do pacote de mesmo nome ou de sua versão on-line .