псевдонимы не расширяются при запуске через SSH [дубликат]

На этот вопрос уже есть ответ:

, так что у меня есть псевдоним для hadoop, который я определил в bash_aliases, который, как мне кажется, затрагивает bashrc.

alias hadoop=/usr/local/hadoop-2.7.2/bin/hadoop

Теперь псевдоним работает нормально, когда я пытаюсь запустить его напрямую. Но когда я пробую это

ssh aditya@localhost hadoop

, я получаю следующее сообщение об ошибке

bash: hadoop: command not found

Я тоже пробовал следующее

shopt -s expand_aliases

Но это не сработало. Может ли кто-нибудь мне помочь.

Обновление:

Этот вопрос отличается от моего, потому что команда ssh генерируется не мной, поэтому решение этого вопроса не решает мой вопрос. Команда ssh генерируется и выполняется скриптом внутри библиотеки, которую я использую. Я не предпочитаю изменять этот сценарий для изменения команды, поскольку я не совсем понимаю, как этот сценарий работает.

-1
задан 13 April 2017 в 15:25

1 ответ

От man ssh

Если команда указана, она выполняется на удаленном хосте вместо оболочки входа в систему.

Это подразумевает, что оболочка выполнит Вашу команду как sh -c. Это, в первую очередь - это работает в dash, который является оболочкой по умолчанию и symlinked к /bin/sh. Так Ваш псевдоним для bash не будет работать во-первых.

Второй из всех, sh -c неинтерактивная оболочка. Это означает, что не получит Ваш ~/.bashrc если Вы определили псевдоним там.

Но главная причина, почему Ваша команда не работает, состоит в том, потому что Вы работаете

alias hadoop=/usr/local/hadoop-2.7.2/bin/hadoop

на текущей сессии оболочки. Это не экспортируется, ни это находится в ~/.bashrc быть полученным для начала


Вот альтернатива. Сделайте псевдоним в Вашем ~/.bashrc:

alias run_hadoop='ssh aditya@localhost /usr/local/hadoop-2.7.2/bin/hadoop'

Тем путем это будет легче путь, чем определение псевдонима для просто команды и сбоя много раз для выполнения его. С другой стороны, сделайте сценарий обертки run_hadoop.sh в Вашем корневом каталоге:

#!/bin/bash
exec /usr/local/hadoop-2.7.2/bin/hadoop

Удостоверьтесь, что это - исполняемый файл с chmod +x run_hadoop.sh. После этого можно сделать

ssh aditya@localhost 'bash /home/user/run_hadoop.sh'
1
ответ дан 28 September 2019 в 15:55

Другие вопросы по тегам:

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