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

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

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

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

  • Unix-эпоха в миллисекундах
  • Разделить одну строку в массив символов, используя ТОЛЬКО bash
  • Почему ssh-copy-id с файлом non-`id_rsa` на Mac OSX говорит мне, что мой ключ уже существует?
  • Gentoo Linux GPG правильно шифрует файл, прошедший через параметр, но при чтении со стандартного ввода выбрасывает «Несоответствующий ioctl для устройства»
  • SSH для дешифрования зашифрованного LVM во время загрузки безглавых серверов?
  • Как получить подсказку стиля стиля стрелки после установки powerline?
  •  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 на другом хосте, который работает для всех оболочек?

  • SSH запрашивает пароль, когда снаружи .ssh /, но не внутри .ssh /
  • Скоба сжатия
  • Сценарий и процессы Bash
  • Вкладка и завершение
  • Вход в SSH продолжает пинать меня
  • Почему одно и то же sed regex (после grep) выходит из строя при запуске в сценарии bash или командной строке bash?
  • 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.

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