несоответствие переменной пути при использовании ssh

#bash #ssh #path

#bash #ssh #путь

Вопрос:

Я сделал это:

 ssh me@remote which hg
  

ничего не вернуло, по-видимому, потому, что не смогло найти hg.

Итак, я сделал это:

 ssh me@remote echo $PATH
  

который вернул этот длинный беспорядок: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/ texbin:/opt/bin

Затем я сделал это:

 ssh me@remote
<after getting logged in to the remote computer>
which hg
/opt/bin/hg
  

Почему сервер сможет найти двоичный файл hg в одном экземпляре, но не в обоих? Что вам нужно сделать, чтобы исправить это, чтобы

 ssh me@remote which hg 
  

работает?

Комментарии:

1. Попробуйте ssh me@remote echo $(which hg) , хотя я не знаю, почему это не сработало бы по-другому. И which должен жаловаться, если он не находит программу, так что, вероятно, это не проблема PATH , если она не установлена.

2. Я всегда видел, что либо выводит путь к программе с указанием имени (т. Е. Какой ls будет печатать /bin/ls), и если такой программы нет, она ничего не печатает, но возвращает 1.

3. У меня нет вашего обширного опыта, но в моей системе он довольно сильно жалуется. Вы попробовали мое предложение?

4. Я попробовал это предложение, но оно напечатало местоположение двоичного файла hg на моем локальном компьютере.

5. Возможно ssh me@remove bash -c "which hg" (или в зависимости от того, какую оболочку вы хотите).

Ответ №1:

Это должно сработать (как упоминалось в ooga).

 ssh me@remote "which hg || whereis hg"