자정 사령관 구성 디렉토리 위치 시작 옵션


10

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

[시스템 데이터]

Config directory: /etc/mc/

[사용자 데이터]

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

첫 번째는 시스템 전체이고 두 번째는 사용자 별입니다.

두 번째는 사용자의 집 위치에 의존하는 것 같습니다. 다시 말해서, 그것은 그것에 묶여있다. 즉, 동일한 사용자로 대체 구성을 사용하여 mc를 시작 (일시적으로)하려는 경우 export이전에 HOME 변수를 변경 (및 ing) 하지 않고 수행 할 수 없습니다 . 이 'Changing-HOME-prior-to start to'대안은 트릭을 수행하지만 사용자 HOME을 수정하기 때문에 거의 받아 들여지지 않습니다.

방법 중 하나가 있다고 생각하십니까

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

  2. 이전에 HOME을 변경하는 것이 사용자 디렉토리 위치를 변경하는 유일한 방법 인 경우 mc가 시작된 직후 사용자에 대해 '자연'HOME 복원

다르게 구성된 mc 인스턴스는 동시에 실행되는 경우 서로 간섭하지 않아야합니다.

답변:


11

생각보다 간단 해졌습니다. mc를 시작하기 전에 MC_HOME 변수를 대체 경로로 설정할 수 있습니다. 매뉴얼 페이지는 바로 답을 찾을 수있는 것이 아닙니다 =)

작동 방식은 다음과 같습니다.-일반적인 방법

[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 구성을 사용하려고합니다. 동시 세션은 서로 간섭하지 않습니다.

이것은 https://github.com/Russell91/sshrc에 설명 된 sshrc-approach의 일부로 잘 작동합니다.


이 솔루션의 작은 단점 : MC_HOME을 일반적인 HOME과 다른 디렉토리로 설정하면 mc는 일반적인 ~ / .bashrc의 내용을 무시하므로 해당 파일에 정의 된 사용자 지정 별칭이 더 이상 작동하지 않습니다. 해결 방법 : ~ / .bashrc에 대한 심볼릭 링크를 새 MC_HOME 디렉토리에 추가하십시오
Cri

1

당신이 할 수없는 한, 다른 구성 디렉토리를 사용하여 동일한 사용자 동시에 두 개의 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파일에 있으며 시작시 읽습니다 (따라서이 방법으로 즉시 전환 할 수 없음). "설정 저장"이 아닌 한 종료 할 때까지 종료되지 않지만 종료시 덮어 쓰일 수 있으므로 실행중인 인스턴스의 이전 또는 외부에서 수행 한 작업을 지우는 것이 위험합니다.


실제로 작동합니다, 당신의 아이디어는 매우 분명합니다, 시간 내 주셔서 감사합니다. 그러나 내 아이디어는 서로 간섭하지 않는 동일한 계정으로 다른 구성된 mc를 실행할 수 있다는 것입니다. 내 질문에 그것을 지정해야합니다. 설정 디렉토리에 대한 경로는 실제로 하드 코딩되어 있지만 사용자의 홈 디렉토리에 상대적으로 하드 코딩되어 있습니다. 즉 $ HOME의 값이므로 mc 시작 전에 변경합니다. mc 시작 전에 변경합니다. 단점은 $ HOME은 mc가 실행되는 동안 변경된 상태로 유지됩니다. mc가 원래 HOME으로 복원 할 시동 후크가 있으면 해결할 수 있습니다.
Tagwint

'동일한 시간'조건으로 원래의 q를 확장했습니다. 이전 주석 크기 제한에 맞지 않았습니다.
Tagwint
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.