Quando você usa source
, é o shell atual que lê o arquivo, não o shell mencionado na linha #!
. E suponho que seu shell seja zsh
ou ksh93
, que usa read -p
para ler de um co-processo.
Um exemplo disso em ksh93
:
cat /etc/passwd |&
while IFS=":" read -p user rest; do
printf 'There is a user called %s\n' "$user"
done
Para executar o seu script, mencione explicitamente o interpretador:
$ bash script.sh
... ou torne o script executável e execute-o:
$ chmod +x script.sh
$ ./script.sh
Para obter read
para usar um prompt personalizado em zsh
e ksh93
:
read username"?What's you name? "
printf 'Hello %s!\n' "$username"