O realpath é um comando real ou um script? Eu verificaria para ver de onde vem.
$ type -a realpath
Eu não estou familiarizado com essa ferramenta, e provavelmente não faz parte de sua distribuição normal, talvez ela esteja instalada em um local não padrão que não esteja presente no $PATH
do Bash, mas esteja no% co_de do seu ambiente de login %.
Em qualquer caso, o comando $PATH
acima mostrará de onde o comando está vindo, ponto no qual você pode alterar o método que está chamando no script da seguinte forma:
echo $(/path/to/realpath test.sh)
Ou altere o type
do seu script para que também inclua esse local não padrão.
Funções no shell
Grande parte do seu ambiente não é chamado quando você invoca um script de shell. Se você pensar sobre isso, isso faz muito sentido, já que você geralmente não quer que os scripts tenham toda a bagagem adicional que o ambiente de um usuário possa ter.
Você pode determinar qual arquivo de origem está fornecendo essa função e fornecê-la ou simplesmente instruir o Bash a incorporar seu ambiente de login.
#!/bin/bash -l
echo $(realpath "$1")