Opção de inicialização da localização do dir de configuração Midnight Commander

10

Se você correr %código% você verá que há o diretório de configuração [System data] e o diretório de configuração [User data]

[Dados do sistema]

Config directory: /etc/mc/

[dados do usuário]

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

O primeiro é todo o sistema, o segundo é específico do usuário.

O segundo parece depender da localização da casa do usuário; em outras palavras, está ligado a isso. Isso significa que se você quiser (temporariamente) iniciar o mc com uma configuração alternativa como o mesmo usuário, não poderá fazê-lo sem alterar (e mc -F ing) a variável HOME anterior a ele. Esta solução alternativa 'Alterar-CASA-antes-de-começar', embora faça o truque, é dificilmente aceitável, pois bem ... modifica o usuário HOME.

Você acha que existe uma maneira de

  1. Altere o diretório de configuração do usuário dinamicamente antes do mc iniciar (a opção de linha de comando seria a mais apropriada, mas parece não estar lá)

  2. Restaurar HOME 'natural' para o usuário logo após o mc iniciado, se alterar HOME HOME antes é a única maneira de alterar a localização do diretório do usuário

As instâncias de mc configuradas de forma diferente não devem interferir uma na outra se estiverem sendo executadas simultaneamente.

    
por Tagwint 18.12.2014 / 16:18

2 respostas

10

Isso acabou sendo mais simples, como se poderia pensar. A variável MC_HOME pode ser configurada como caminho alternativo antes de iniciar o mc. As páginas do manual não são algo que você possa encontrar a resposta imediatamente =)

veja como funciona: - caminho usual

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

e o caminho alternativo:

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

Use o caso desse recurso:

Você tem que compartilhar o mesmo nome de usuário no servidor remoto (o acesso pode ser distinto pelas chaves rsa) e deseja usar sua confg mc favorita sem sobrescrevê-la. Sessões concorrentes não interferem entre si.

Isso funciona bem como parte da abordagem sshrc descrita em link

    
por 19.12.2014 / 17:41
1

Se você quer dizer, você quer ser capaz de executar duas instâncias de mc como o mesmo usuário ao mesmo tempo com diferentes diretórios de configuração, tanto quanto eu posso dizer que você não pode. O caminho é codificado.

No entanto, se você quer dizer, você quer ser capaz de mudar qual diretório de configuração está sendo usado, aqui está uma idéia (testado, funciona). Você provavelmente vai querer fazer isso sem o mc rodando:

  • Crie um diretório $HOME/mc_conf , com um subdiretório, one .
  • Mover o conteúdo de $HOME/.config/mc para o subdiretório $HOME/mc_conf/one
  • Duplique o diretório one como $HOME/mc_conf/two .
  • Crie um script, $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  
    
  • Execute isso, switch_mc one . rm vai latir sobre tal arquivo, isso não importa.

Espero que esteja claro o que está acontecendo lá - isso define o caminho do diretório de configuração como um link simbólico. Quaisquer alterações de configuração que você fizer e salvar agora serão no diretório one . Você pode então sair e switch_mc two , revertendo para a configuração antiga, então iniciar o mc novamente, fazer mudanças e salvá-las, etc.

Você pode conseguir remover o killall mc e brincar; o material de configuração está no arquivo ini , que é lido na inicialização (assim você não pode mudar na hora dessa maneira). Não é tocado até sair a menos que você "Salve setup", mas na saída ele pode ser sobrescrito, então o perigo aqui é que você apague algo que você fez antes ou fora da instância em execução.

    
por 18.12.2014 / 17:03

Tags