실행하면
mc -F
[시스템 데이터] 구성 디렉터리와 [사용자 데이터] 구성 디렉터리가 있음을 알 수 있습니다.
[시스템 데이터]
Config directory: /etc/mc/
[사용자 데이터]
Config directory: /home/<username>/.config/mc/
첫 번째는 시스템 전체에 적용되고 두 번째는 사용자별로 적용됩니다.
두 번째는 사용자의 집 위치에 따라 달라지는 것 같습니다. 즉, 여기에 묶여 있습니다. 이는 동일한 사용자로 대체 구성에서 (일시적으로) mc를 시작하려는 경우 export
이전 HOME 변수를 변경(및 지정)하지 않고는 그렇게 할 수 없음을 의미합니다. 이 "부팅 전 홈 디렉토리 변경" 해결 방법은 문제를 해결하기는 하지만 사용자의 홈 디렉토리를 수정하기 때문에 받아들이기가 어렵습니다.
방법이 있다고 생각하시나요?
mc가 시작되기 전에 사용자 구성 디렉터리를 동적으로 변경합니다(명령줄 옵션이 가장 적합하지만 존재하지 않는 것 같습니다).
이전에 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
시작 시 읽혀지는 파일에 있습니다(따라서 이 방법으로 즉시 전환할 수는 없습니다). 그런 다음 "설정을 저장"하지 않으면 종료할 때까지 건드리지 않지만 종료 시 덮어쓸 수 있으므로 실행 중인 인스턴스 이전이나 외부에서 수행한 작업을 삭제하는 것이 위험합니다.