Я начал задавать этот вопрос, но ответил на него, пока он был открыт. Я собираюсь опубликовать этот вопрос, дополнить его своим решением и оставить его открытым для других потенциальных решений.
<
предыстория>
Я пользователь tmux и vim. Мне нравится удаленная работа с vim, так как мне не нужно беспокоиться о том, что машины разработки Ubuntu вылетят, когда флэш-фильм вызывает у меня панику ядра. Запуск tmux означает, что после перезагрузки меня ждут открытые файлы, и я могу продолжить с того места, где остановился. У меня были проблемы с запуском vim в сеансе tmux, когда я подключился так:
ssh example.com -t 'tmux attach'
Возникают проблемы UTF-8, которые не возникают при обычном обстреле и просто подключаются к сеансу tmux вручную.
<
/ предыстория>
Поэтому я хочу использовать повторно используемый метод запуска чего-либо при входе в систему через ssh, который не влияет ни на одну из других вещей, которые я настроил в моей .zshrc
(или вашей, .bashrc
если вы все еще используете bash), которые могут потребоваться для моей среды разработки. появляются, когда я время от времени работаю локально на самой упомянутой машине.
источник
ssh example.com -t 'tmux attach'
, не в том, что у меня проблемы с загрузкой среды, а в том, что у меня были проблемы с отображением символов UTF-8; эта проблема не существует при подключении обычным способом. Вот почему этот вопрос касается запуска сценариев сразу после подключения по SSH..profile
? Я предположил, что проблема была из-за неправильно установленных локалей на целевой машине, которая установлена/etc/profile
или.profile
исправлена. Проблема локали, вероятно, исправлена с помощью дополнительной информации.Ранее я советовал установить
PermitUserEnvironment yes
и добавить переменную окружения в вашу систему,~/.ssh/environment
пока Эли Хеди не присоединился к ней с лучшим предложением в комментариях ниже.Откройте ваш
.zlogin
(bash:.bash_profile
и т. Д.) И поставьте следующее:Вдохновение взято из: Как мне запросить ввод в сценарии оболочки Linux?
Обратите внимание, что я использовал
.zlogin
файл, но вы можете использовать ваш.zshrc
файл, но мне нравится держать мои точные файлы в чистоте, и он разделяет его, чтобы я мог использовать его на других машинах.Замените вопрос чем-то подходящим для себя и замените тем,
MY_SSH_CONNECTION="yes" tmux attach
что вы хотите выполнить в этой точке.Обратите внимание, что сценарий устанавливает
MY_SSH_CONNECTION="yes"
передtmux attach
тем, как передать его в tmux, так как он также открывает оболочку, которая получит доступ к тому же сценарию, описанному выше, и предотвратит любую рекурсию.источник
if [[ "$SSH_CONNECTION" != "" ]]
должно сделать это.Я добавляю это в мои файлы .bash_profile:
Это дает мне некоторое время, чтобы прервать повторное подключение или создание сеанса экрана. Он не будет работать с форматами 'ssh system command' (которые не вызывают профиль ~ /.*). Функция оболочки настроена на повторное подключение, если я отменяю.
источник
Вы могли бы рассмотреть возможность бега
и запустите там свою терминальную сессию. Затем вы можете отсоединить (
^A^D
) и подключить позже (также от другого клиента). Это устранит проблему с неинтерактивной инициализацией, так как на экране хранятся полные сеансы интерактивного терминала (опционально также входящие в систему оболочкиman screen
(1) или^A?
)источник
-t 'tmux attach'
меня есть проблемы с Vim, которые обычно отсутствуют. Вот почему реальный вопрос заключается в запуске сценариев в ssh connect, а не в управлении экранами / сессиями. Извиняюсь за то, что неГоворить с вопросами UTF-8 конкретно, если вы добавите
И
$LANG
установлен на что-то вродеen_US.UTF-8
на локальном конце, и ваш sshd на удаленном конце разрешаетSendEnv
директиву (сAcceptEnv
insshd_config
), tmux на другом конце должен соблюдать ее. У меня была эта проблема некоторое время, и это было трудно устранить.источник
Если вы хотите, чтобы он запускался каждый раз, когда вы подключаетесь, вы можете просто добавить
tmux attach
его внизу~/.profile
на удаленной машине.источник