Команда не найдена при выполнении на удаленном сервере с использованием сценария оболочки

Это можно сделать с помощью bash:

while IFS="=" read key value; do 
    if [[ key == branch.*.description ]]; then
        branch=${key#branch.}        # remove "branch." prefix
        branch=${key%.description}   # remove ".description" suffix
        echo "$branch $value" 
    fi
done < <(git config -l)

Я специально "разбил" строку дважды :сначала на равные , затем на точки. В «значении» явно могут быть точки, поэтому я хочу иметь полный контроль над разбиением слов.

0
25.03.2021, 02:03
1 ответ

В этом случае вам нужно:

ssh XYZ "qlogin -l cuda=1"

или

ssh XYZ "export TERM=xterm ; qlogin -l cuda=1"

Если вы получили сообщение об ошибке, связанной с тем, что переменная TERMне установлена, или:

ssh XYZ << 'EOF'
qlogin -l cuda=1
EOF

Если у вас есть несколько команд для запуска.

Наконец, так как я уверен, что это могло бы сработать, если бы не было:

ssh XYZ << 'EOF'
shopt -s expand_aliases
source.bashrc
qlogin -l cuda=1
EOF

Как вы, наверное, заметили, последний может работать, если другой не работает, в основном, если qloginне находится в одном из экспортируемых PATH по умолчанию,и либо:

  • псевдоним где-то еще (например, :некоторые удаленные серверы предпочитают хранить свои сценарии установки в смонтированной папке NFS, которая не экспортируется в PATH)

  • если это часть более крупной функции/скрипта, состоящего из функций.

Вы можете посмотреть на вывод env, aliasи whereis, чтобы убедиться в этом. Замена .bashrcна все, что может упоминать полный путь к команде qlogin, например .profileили другие, которые приходят на ум.

0
28.04.2021, 22:56

Теги

Похожие вопросы