Опція запуску місця розташування Midnight Commander config dir


10

Якщо ви запустите, mc -F ви побачите, що у ньому є [config data] системний каталог та каталог параметрів [User data]

[Дані про систему]

Config directory: /etc/mc/

[Дані користувача]

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

Перший є загальносистемним, другий - специфічним для користувача.

Другий, здається, залежить від домашнього розташування користувача; інакше кажучи, це пов'язано з цим. Це означає, що якщо ви хочете (тимчасово) запустити mc з альтернативної конфігурації як того самого користувача, ви не можете це зробити, не змінюючи (і не змінюючи export) змінну HOME до неї. Цей спосіб "Зміна-ДОМАШНЯ - перед початком" починається, хоча це і є трюком, навряд чи прийнятний, тому що він ... змінює ДОМАШНІСТЬ користувача.

Як ви вважаєте, чи існує спосіб для того чи іншого

  1. Динамічно змінюйте dir config dir перед тим, як запустити mc (варіант командного рядка був би найбільш підходящим, але, схоже, його немає)

  2. Відновити "природний" ДОМАШНЄ для користувача відразу після запуску mc, якщо зміна HOME раніше - це єдиний спосіб змінити місцезнаходження dir користувача

Примірники mc, налаштовані по-різному, не повинні заважати один одному, якщо вони працюють одночасно.

Відповіді:


11

Це виявилося простіше, як можна було б подумати. Змінна MC_HOME може бути встановлена ​​на альтернативний шлях до запуску mc. Сторінки чоловіка - це не те, на що можна знайти відповідь відразу =)

ось як це працює: - звичайний спосіб

[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/

і альтернативний спосіб:

[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/

Використовуйте випадок цієї функції:

Ви повинні поділитися тим самим іменем користувача на віддаленому сервері (доступ може бути відключений клавішами rsa) і хочете скористатися улюбленою конфігурацією mc, не перезаписуючи її. Одночасні сеанси не заважають одне одному.

Це добре працює як частина підходу sshrc, описаного в https://github.com/Russell91/sshrc


Невеликий недолік цього рішення: якщо ви встановите MC_HOME в каталог, відмінний від звичайного HOME, mc ігнорує вміст вашого звичайного ~ / .bashrc, тому, наприклад, ваші користувацькі псевдоніми, визначені у цьому файлі, більше не працюватимуть. Вирішення: додайте символьне посилання до вашої ~ / .bashrc у новий каталог MC_HOME
Cri

1

Якщо ви маєте в виду, ви хочете , щоб мати можливість запускати два примірника тс в якості того ж користувача , в той же час з різними довідниками конфігурації, наскільки я можу вам сказати не можу. Шлях твердо кодований.

Однак якщо ви маєте на увазі, ви хочете мати можливість перемикати, який конфігураційний каталог використовується, ось ідея (перевірена, працює). Ви, мабуть, хочете зробити це без запуску mc:

  • Створіть каталог $HOME/mc_confз підкаталог, one.
  • Перемістіть вміст $HOME/.config/mcу $HOME/mc_conf/oneпідкаталог
  • Дублювати oneкаталог як $HOME/mc_conf/two.
  • Створіть сценарій $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  
    
  • Запуск цього switch_mc one. rmне буде гавкати про відсутність такого файлу, це не має значення.

Сподіваємось, зрозуміло, що там відбувається - це встановлює шлях до каталогу конфігурації як символьне посилання. Незалежно від зміни конфігурації, яку ви зараз зробите та збережете, буде вкладено oneкаталог. Після цього можна вийти та switch_mc two, повернувшись до старої конфігурації, потім запустити mc знову, внести зміни та зберегти їх тощо.

Ви можете піти, видаляючи killall mcта граючи; Конфігураційні дані знаходяться у iniфайлі, який читається при запуску (тому ви не можете ввімкнути функцію льоту таким чином). Потім не торкається до виходу, якщо ви не "Збережіть налаштування", але при виході це може бути перезаписано, тож тут небезпека полягає в тому, що ви видалите щось, що зробили раніше або поза запущеним екземпляром.


це справді працює, ваша ідея досить зрозуміла, дякую за ваш час. Однак моя ідея полягала в тому, щоб можна було запускати різні конфігурації комп'ютерів під одним і тим же обліковим записом, не заважаючи один одному. Я мав би це вказати у своєму питанні. шлях до конфігурації dir насправді є жорстким кодом, але він твердо кодується ВІДНОСНО до домашнього dir користувача, тобто значення $ HOME, таким чином, змінивши його до початку mc start НЕ змінює розташування dir config - я перевірив це. недолік - $ HOME залишається зміненим доти, доки не працює mc, що може бути вирішено, якби mc мав якусь гачку запуску, щоб помістити відновлення до початкового HOME
Tagwint

Я продовжив свій початковий q із умовою "той самий час" - він не вписувався в моє попереднє обмеження розміру коментарів
Tagwint
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.