У меня есть файл сценария оболочки, подобный следующему:
#!/bin/bash
CONF_FILE="/tmp/settings.conf" #settings.conf contains OS_NAME="Caine Linux"
source $CONF_FILE
display_os_name() { echo "My OS is:" $OS_NAME }
#using the function locally works fine
display_os_name
#displays: My OS is: Caine Linux
#using the function on the remote host doesn't work
ssh user@host "$(declare -f); display_os_name"
#displays: My OS is:
Если я удаляю -f
и использую только ssh user@host "$(declare); display_os_name"
, он работает, но отображает эти ошибки и предупреждения:
bash: line 10: BASHOPTS: readonly variable
bash: line 18: BASH_VERSINFO: readonly variable
bash: line 26: EUID: readonly variable
bash: line 55: PPID: readonly variable
bash: line 70: SHELLOPTS: readonly variable
bash: line 76: UID: readonly variable
Если я использую ssh user@host "$(declare); display_os_name >/dev/null"
для подавления предупреждений, подавляется только вывод функции (Моя ОС: Caine Linux), а не предупреждений.
Есть ли способ запуска локальных функций вместе сисходные локальные файлы на удаленном хосте SSH?