На этот вопрос уже есть ответ:
, так что у меня есть псевдоним для 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 генерируется и выполняется скриптом внутри библиотеки, которую я использую. Я не предпочитаю изменять этот сценарий для изменения команды, поскольку я не совсем понимаю, как этот сценарий работает.
От 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'