Opcja uruchamiania lokalizacji konfiguracji Midnight Commander config


10

Po uruchomieniu mc -F zobaczysz, że istnieje katalog konfiguracji [Dane systemu] i katalog konfiguracji [Dane użytkownika]

[Dane systemowe]

Config directory: /etc/mc/

[Dane użytkownika]

Config directory: /home/<username>/.config/mc/

Pierwszy dotyczy całego systemu, drugi jest specyficzny dla użytkownika.

Drugi wydaje się zależeć od lokalizacji domowej użytkownika; innymi słowy, jest z tym związany. Oznacza to, że jeśli chcesz (tymczasowo) uruchomić mc z alternatywną konfiguracją jako ten sam użytkownik, nie możesz tego zrobić bez zmieniania (i wprowadzania export) zmiennej HOME przed nią. To obejście „Zmiana HOME-przed-uruchomieniem”, choć działa, jest trudne do zaakceptowania, ponieważ dobrze… modyfikuje HOME użytkownika.

Czy uważasz, że jest na to sposób

  1. Dynamicznie zmień katalog konfiguracji użytkownika przed uruchomieniem mc (opcja wiersza poleceń byłaby najbardziej odpowiednia, ale wydaje się, że jej nie ma)

  2. Przywróć „naturalny” HOME dla użytkownika zaraz po uruchomieniu mc, jeśli zmiana HOME wcześniej jest jedynym sposobem na zmianę lokalizacji katalogu użytkownika

Instancje mc skonfigurowane inaczej nie mogą zakłócać się, jeśli działają jednocześnie.

Odpowiedzi:


11

Okazało się to prostsze, jak mogłoby się wydawać. Zmienna MC_HOME może być ustawiona na alternatywną ścieżkę przed uruchomieniem mc. Strony podręcznika nie są czymś, na co można od razu znaleźć odpowiedź =)

oto jak to działa: - zwykły sposób

[jsmith@wstation5 ~]$ mc -F
Root directory: /home/jsmith

[System data]
<skipped>

[User data]
    Config directory: /home/jsmith/.config/mc/
    Data directory:   /home/jsmith/.local/share/mc/
        skins:          /home/jsmith/.local/share/mc/skins/
        extfs.d:        /home/jsmith/.local/share/mc/extfs.d/
        fish:           /home/jsmith/.local/share/mc/fish/
        mcedit macros:  /home/jsmith/.local/share/mc/mc.macros
        mcedit external macros: /home/jsmith/.local/share/mc/mcedit/macros.d/macro.*
    Cache directory:  /home/jsmith/.cache/mc/

i alternatywny sposób:

[jsmith@wstation5 ~]$ MC_HOME=/tmp/MCHOME mc -F
Root directory: /tmp/MCHOME

[System data]
<skipped>    

[User data]
    Config directory: /tmp/MCHOME/.config/mc/
    Data directory:   /tmp/MCHOME/.local/share/mc/
        skins:          /tmp/MCHOME/.local/share/mc/skins/
        extfs.d:        /tmp/MCHOME/.local/share/mc/extfs.d/
        fish:           /tmp/MCHOME/.local/share/mc/fish/
        mcedit macros:  /tmp/MCHOME/.local/share/mc/mc.macros
        mcedit external macros: /tmp/MCHOME/.local/share/mc/mcedit/macros.d/macro.*
    Cache directory:  /tmp/MCHOME/.cache/mc/

Wykorzystaj przypadek tej funkcji:

Musisz udostępnić tę samą nazwę użytkownika na zdalnym serwerze (dostęp można rozdzielić za pomocą kluczy rsa) i chcesz użyć ulubionej konfiguracji MC bez nadpisywania jej. Sesje równoległe nie przeszkadzają sobie nawzajem.

Działa to dobrze jako część podejścia sshrc opisanego w https://github.com/Russell91/sshrc


Mała wada tego rozwiązania: jeśli ustawisz MC_HOME na katalog inny niż zwykły HOME, mc zignoruje zawartość twojego zwykłego ~ / .bashrc, więc na przykład niestandardowe aliasy zdefiniowane w tym pliku już nie będą działać. Obejście: dodaj dowiązanie symboliczne do swojego ~ / .bashrc do nowego katalogu MC_HOME
Cri

1

Jeśli masz na myśli, chcesz być w stanie uruchomić dwie instancje mc jako ten sam użytkownik w tym samym czasie z różnymi katalogami konfiguracji, o ile wiem, że nie możesz. Ścieżka jest zakodowana na stałe.

Jeśli jednak masz na myśli, że chcesz mieć możliwość przełączania, który katalog konfiguracji jest używany, oto pomysł (przetestowany, działa). Prawdopodobnie chcesz to zrobić bez uruchamiania mc:

  • Utworzyć katalog $HOME/mc_conf, w podkatalogu one.
  • Przenieś zawartość $HOME/.config/mcdo $HOME/mc_conf/onepodkatalogu
  • Zduplikuj onekatalog jako $HOME/mc_conf/two.
  • Utwórz skrypt $HOME/bin/switch_mc:

    #!/bin/bash
    
    configBase=$HOME/mc_conf
    linkPath=$HOME/.config/mc
    
    if [ -z $1 ] || [ ! -e "$configBase/$1" ]; then
        echo "Valid subdirecory name required."
        exit 1
    fi
    
    killall mc
    rm $linkPath
    ln -sv $configBase/$1 $linkPath  
    
  • Uruchomić tego switch_mc one. rmbędzie szczekać o takim pliku, to nie ma znaczenia.

Mamy nadzieję, że jasne jest, co się tam dzieje - ustawia ścieżkę katalogu config jako dowiązanie symboliczne. Wszelkie zmiany konfiguracji, które teraz wprowadzisz i zapiszesz, będą znajdować się w onekatalogu. Następnie możesz wyjść i switch_mc twopowracając do starej konfiguracji, a następnie ponownie uruchomić mc, wprowadzić zmiany i zapisać je itp.

Możesz uciec od usuwania killall mci zabawy; elementy konfiguracyjne znajdują się w inipliku, który jest odczytywany podczas uruchamiania (więc nie można w ten sposób przełączać się w locie). Następnie nie jest dotykany aż do wyjścia, chyba że „Zapisz konfigurację”, ale przy wyjściu może zostać nadpisany, więc istnieje niebezpieczeństwo, że usuniesz coś, co zrobiłeś wcześniej lub poza działającą instancją.


to działa, twój pomysł jest całkiem jasny, dziękuję za poświęcony czas. Mój pomysł polegał na tym, aby móc uruchamiać różne konfiguracje MC na tym samym koncie, nie zakłócając się nawzajem. Powinienem był to sprecyzować w swoim pytaniu. ścieżka do katalogu konfiguracji jest w rzeczywistości zakodowana na stałe, ale jest ona DOKŁADNIE zapisana w katalogu domowym użytkownika, czyli jest to wartość $ HOME, a więc zmiana go przed uruchomieniem mc NIE zmienia lokalizacji katalogu konfiguracji - sprawdziłem to. wadą jest to, że $ HOME pozostaje zmieniony tak długo, jak działa mc, co można rozwiązać, jeśli mc miałby
swoisty

Rozszerzyłem swoje oryginalne q z warunkiem „tego samego czasu” - nie pasowało to do mojego poprzedniego ograniczenia rozmiaru komentarza
Tagwint
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.