Zacząłem zadawać to pytanie, ale odpowiedziałem na nie, gdy miałem je otwarte. Zamierzam opublikować to pytanie, sprawdzić moje rozwiązanie i pozostawić je otwarte na inne potencjalne rozwiązania.
<
historia>
Jestem użytkownikiem tmux i vim. Lubię zdalną pracę z vimem, ponieważ nie muszę się martwić, że maszyny deweloperskie Ubuntu przestaną działać, gdy film flash wywoła u mnie panikę jądra. Uruchomienie tmux oznacza, że otwarte pliki czekają na mnie po ponownym uruchomieniu i mogę kontynuować od miejsca, w którym przestałem. Miałem problemy z uruchomieniem vima w sesji tmux, kiedy łączę się tak:
ssh example.com -t 'tmux attach'
Pojawiają się problemy z UTF-8, które nie pojawiają się podczas normalnego tworzenia powłoki i ręcznego dołączania do sesji tmux.
<
/ backstory>
Dlatego chcę metody wielokrotnego uruchamiania przy logowaniu ssh, która nie wpływa na żadną z innych rzeczy, które skonfigurowałem w moim .zshrc
(lub twoim, .bashrc
jeśli nadal używasz bash), które mogą być wymagane w moim środowisku programistycznym, co nie pojawiają się, gdy od czasu do czasu pracuję lokalnie na bardzo wspomnianej maszynie.
źródło
ssh example.com -t 'tmux attach'
jest to, że mam problemy z ładowaniem środowiska, ale dlatego, że miałem problemy z wyświetlaniem znaków UTF-8; ten problem nie występuje podczas łączenia w tradycyjny sposób. Dlatego to pytanie dotyczy uruchamiania skryptów natychmiast po połączeniu przez SSH..profile
? Zakładam, że problem był spowodowany niepoprawnie ustawionymi ustawieniami narodowymi na komputerze docelowym, które zostały naprawione/etc/profile
lub.profile
naprawione. Problem z ustawieniami regionalnymi można prawdopodobnie rozwiązać za pomocą dodatkowych informacji.Wcześniej doradzałem ustawienie
PermitUserEnvironment yes
i dodanie zmiennej środowiskowej~/.ssh/environment
do momentu, aż Eli Heady włączy się z lepszą sugestią w komentarzach poniżej.Otwórz
.zlogin
(bash:.bash_profile
itp.) I wprowadź następujące informacje:Inspiracja pochodzi z: Jak poprosić o dane wejściowe w skrypcie powłoki systemu Linux?
Zauważ, że użyłem tego
.zlogin
pliku, ale możesz go użyć.zshrc
, ale lubię dbać o porządek w plikach dot. Oddziela je, aby móc używać go na innych komputerach.Zastąp pytanie pytaniem odpowiednim dla siebie i zastąp tym,
MY_SSH_CONNECTION="yes" tmux attach
co chcesz uruchomić w tym momencie.Zwróć uwagę, jak skrypt ustawia się
MY_SSH_CONNECTION="yes"
przedtmux attach
przekazaniem go do tmux, ponieważ otworzy on również powłokę, która uzyska dostęp do tego samego skryptu powyżej i zapobiegnie jakiejkolwiek rekurencji.źródło
if [[ "$SSH_CONNECTION" != "" ]]
powinno to zrobić.Sam dodaję to do moich plików .bash_profile:
To daje mi trochę czasu na przerwanie ponownego przyłączania się lub tworzenie sesji ekranowej. Nie działa w formatach „ssh system command” (które nie wywołują profilu ~ /.*). Funkcja powłoki jest skonfigurowana do ponownego przyłączenia, jeśli przerwam.
źródło
Możesz rozważyć uruchomienie
i uruchom tam swoją sesję terminalową. Następnie możesz odłączyć (
^A^D
) i podłączyć ponownie później (również od innego klienta). Sprawi, że problem z nieinteraktywną inicjalizacją zniknie, ponieważ screen zachowuje pełne interaktywne sesje terminali (opcjonalnie również powłoki logowania,man screen
(1) lub^A?
)źródło
-t 'tmux attach'
mam problemy z vimem, które nie występują normalnie. Dlatego prawdziwe pytanie dotyczy uruchamiania skryptów w ssh connect zamiast zarządzania ekranem / sesją. Przepraszam, że nieMówiąc konkretnie o sprawach UTF-8, jeśli dodasz
I
$LANG
jest ustawiony na cośen_US.UTF-8
na lokalnym końcu, a twój sshd na zdalnym końcu pozwala naSendEnv
dyrektywę (zAcceptEnv
insshd_config
), tmux na drugim końcu powinien to honorować. Przez jakiś czas miałem ten problem i trudno było go rozwiązać.źródło
Jeśli chcesz, aby działał przy każdym połączeniu, możesz po prostu dodać
tmux attach
na dole swojego~/.profile
komputera zdalnego.źródło