Midnight Commander 구성 디렉터리 위치 시작 옵션

Midnight Commander 구성 디렉터리 위치 시작 옵션

실행하면 mc -F [시스템 데이터] 구성 디렉터리와 [사용자 데이터] 구성 디렉터리가 있음을 알 수 있습니다.

[시스템 데이터]

Config directory: /etc/mc/

[사용자 데이터]

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

첫 번째는 시스템 전체에 적용되고 두 번째는 사용자별로 적용됩니다.

두 번째는 사용자의 집 위치에 따라 달라지는 것 같습니다. 즉, 여기에 묶여 있습니다. 이는 동일한 사용자로 대체 구성에서 (일시적으로) mc를 시작하려는 경우 export이전 HOME 변수를 변경(및 지정)하지 않고는 그렇게 할 수 없음을 의미합니다. 이 "부팅 전 홈 디렉토리 변경" 해결 방법은 문제를 해결하기는 하지만 사용자의 홈 디렉토리를 수정하기 때문에 받아들이기가 어렵습니다.

방법이 있다고 생각하시나요?

  1. mc가 시작되기 전에 사용자 구성 디렉터리를 동적으로 변경합니다(명령줄 옵션이 가장 적합하지만 존재하지 않는 것 같습니다).

  2. 이전에 HOME을 변경하는 것이 사용자 디렉터리 위치를 변경하는 유일한 방법인 경우 mc가 시작되자마자 사용자의 "자연스러운" HOME을 복원합니다.

동시에 실행하는 경우 구성이 다른 mc 인스턴스가 서로 간섭하면 안 됩니다.

답변1

생각보다 간단하다는 것이 밝혀졌습니다. 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

답변2

즉, 동일한 사용자로 두 개의 mc 인스턴스를 실행할 수 있기를 원합니다.동시에내가 아는 한 다른 구성 디렉토리를 사용하는 것은 불가능합니다. 경로가 하드코딩되어 있습니다.

그러나 사용 중인 구성 디렉터리를 전환할 수 있다는 뜻이라면 다음과 같은 아이디어가 있습니다(테스트되었으며 작동함). 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시작 시 읽혀지는 파일에 있습니다(따라서 이 방법으로 즉시 전환할 수는 없습니다). 그런 다음 "설정을 저장"하지 않으면 종료할 때까지 건드리지 않지만 종료 시 덮어쓸 수 있으므로 실행 중인 인스턴스 이전이나 외부에서 수행한 작업을 삭제하는 것이 위험합니다.

관련 정보