dot файл не получен при запуске команды через ssh

Когда я запускаю свою программу в интерактивном режиме, она отлично работает:

ssh somehost $ ~/some/path/somescript.py 

Когда я запускаю свою программу поверх ssh напрямую, она не работает. Переменная PYTHONPATH не установлена, потому что .bashrc не используется.

 ssh somehost ~/some/path/somescript.py 

Если я запустил ssh somehost 'source ~/.bashrc; ~/some/path/somescript.py' ssh somehost 'source ~/.bashrc; ~/some/path/somescript.py' , он работает нормально.

Но последний не будет работать для некоторых других людей, например, с использованием tcsh и вообще не иметь ~/.bashrc ).

Какая команда запускать вещь через ssh на другом хосте, который работает для всех оболочек?

  • Сценарий информационной системы реального времени с использованием ncurses и диалога
  • Сессия SSH приостанавливает средний поток данных; возобновляется с помощью нажатия клавиши
  • Как запустить процесс, если машина не прослушивает порт?
  • Добавление публичного is_rsa.pub в known_hosts автоматически - как?
  • Копирование файлов с одного компьютера на другой без запроса пароля
  • Не удалось отправить ssh с одного сервера Google RedHat / CentOS на другой
  • Пересылка X11 не работает от шпатлевки и XMing до centos 6.4
  • загружать и загружать файлы с сервера без указания пароля
  • 2 Solutions collect form web for “dot файл не получен при запуске команды через ssh”

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

     ssh somehost '. ~/.profile; exec ~/some/path/somescript.py' 

    Вы не должны устанавливать переменные среды в .bashrc : этот файл предназначен для интерактивных оболочек и читается в каждом экземпляре bash. Переменные среды должны быть установлены в .profile , который считывается при входе в систему. Помимо очень небольшого числа людей, которые не используют оболочку стиля Bourne в качестве своей оболочки входа, .profile действительно работает для всех, независимо от того, используют ли они bash или zsh или csh или рыбы в интерактивном режиме. См. Также Разница между .bashrc и .bash_profile , какие файлы установки следует использовать для настройки переменных среды с помощью bash? ,

    При этом существует возможность генерировать сценарий каждый раз, когда вы входите в ssh с определенным ключом. См. Есть ли способ передать информацию о конфигурации оболочки при SSHing на хост? , sh загрузочных файлов по ssh .

    У меня была та же проблема, но для меня решение было другим. Мой пользователь не был настроен на использование bash в качестве оболочки, вместо этого вместо него использовался zsh как shell, поэтому файлы bash dot не запускались при входе в систему. Откройте / etc / passwd с помощью текстового редактора и найдите свое имя пользователя и какую оболочку он использует:

     root:x:0:0:root:/root:/bin/zsh 

    Так выглядит моя пользовательская запись. Обратите внимание, что это говорит / bin / zsh вместо / bin / bash. Для zsh правильный точечный файл ~ / .zprofile. Его содержимое будет запускаться каждый раз при входе в систему с помощью ssh.

    Interesting Posts

    Ошибка MDADM RAID 0

    Cron не соответствует указанному времени

    Тар перезаписывает файлы только для чтения

    Как я могу управлять сверхчувствительной сенсорной панелью?

    Как использовать мой пароль для входа, чтобы сделать две вещи

    Как я могу поддерживать открытое ssh-соединение и использовать его из сценариев оболочки?

    Меры предосторожности при использовании oldconfig

    Проверка производительности алгоритма перегрузки в FreeBSD

    Преобразование идентичных файлов в hardlinks

    NAT (совместное использование Интернета), переключение между несколькими общими интерфейсами

    LMDE: установите последнюю версию Iceweasel или Firefox

    virtualbox-guest- * установлен на хосте; может ли это быть причиной замерзания системы?

    Закройте сеанс ssh, который имеет ControlPersist и поддерживается в фоновом режиме

    Автоматическое обновление пакетов

    Проблемы с правилами udev для запуска сценария bash при отключении жесткого диска

    Linux и Unix - лучшая ОС в мире.