ssh
не делает (и не может) сделать такие переменные доступными на удаленной стороне.
Вместо этого вы можете встраивать определение так же, как встраивали свою функцию:
ssh user@remotehost <<EOF
$(declare -p envi)
$(typeset -f samplefunction)
samplefunction
EOF
Вы также можете скопировать все известные переменные. В этом случае это помогает избавиться от ошибок при настройке значений только для чтения:
ssh user@remotehost <<EOF
{
$(declare -p)
} 2> /dev/null
$(typeset -f samplefunction)
samplefunction
EOF
Если у вас есть определенная переменная, которую вы часто хотите копировать, вы можете выбрать ssh
для автоматической отправки, добавив SendEnv envi
в вашу конфигурацию ssh. Переменная должна быть экспортирована, чтобы это работало.