ПУТИ кажутся неправильными, когда pssh на удаленные серверы

В GCE у меня есть 3 виртуальных машины, и я могу использовать ssh для доступа к ним с одной из них.
Я установил на них Cassandra и настроил переменную среды PATH в ~ / .bash_profile .

~ / .bash_profile:

PATH=$PATH:$HOME/.local/bin:$HOME/bin
export CASSANDRA_HOME=/opt/apache-cassandra-3.11.1
export SPARK_HOME=/opt/spark-2.1.2-bin-hadoop2.7
PATH=$PATH:$CASSANDRA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin
export PATH

Запуск echo $ PATH и получение /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/nmj/.local/bin:/home/nmj/bin:/opt/ apache-cassandra-3.11.1 / bin: /opt/spark-2.1.2-bin-hadoop2.7/bin: /opt/spark-2.1.2-bin-hadoop2.7/sbin означает, что это правильно .

Но при запуске pssh -h hosts.txt -l nmj -i 'echo $ PATH' я получил только / usr / local / bin: / usr / bin .
$ PATH выглядит неверным здесь.

Поэтому я не мог использовать pssh для параллельного выполнения ssh для запуска cassandra , например pssh -h hosts.txt -l nmj -i cassandra , из-за bash: cassandra: command not found .

Как правильно настроить $ PATH ?

Решение:
На мой взгляд, pssh запустит оболочку без входа в систему . Поэтому он не загрузит файл ~ / .bash_profile . Затем, когда я определил эти переменные в файле ~ / .bashrc , это сработало.

0
задан 2 January 2018 в 05:19
1 ответ

Ваш ответ может быть здесь Почему $ PATH удаленной команды ssh отличается от таковой в интерактивной оболочке?

В основном, потому что вы запускаете команду как аргумент, вы на самом деле не открываете оболочку, поэтому файлы не загружаются, а переменная PATH загружается с этими файлами.

Что вы можете сделать, так это создать эти файлы перед запуском команды cassandra, и может работать

/etc/bashrc
/etc/profile
~/.bash_profile
1
ответ дан 4 December 2019 в 16:03

Теги

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