ตัวเลือกการเริ่มต้นตำแหน่งเที่ยงคืนของผู้บัญชาการ


10

หากคุณเรียกใช้ mc -F คุณจะเห็นว่ามีไดเรกทอรีการกำหนดค่า [ข้อมูลระบบ] และ [ข้อมูลผู้ใช้]

[ข้อมูลระบบ]

Config directory: /etc/mc/

[ข้อมูลผู้ใช้]

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

ที่หนึ่งคือทั้งระบบส่วนที่สองคือเฉพาะผู้ใช้

ดูเหมือนว่าอันที่สองจะขึ้นอยู่กับตำแหน่งบ้านของผู้ใช้ กล่าวอีกนัยหนึ่งมันผูกพันกับมัน ซึ่งหมายความว่าหากคุณต้องการ (ชั่วคราว) เริ่ม mc ด้วยการกำหนดค่าทางเลือกเป็นผู้ใช้เดียวกันคุณไม่สามารถเปลี่ยนได้ (และexport) ตัวแปร HOME ก่อนหน้านี้ วิธีแก้ปัญหา 'การเปลี่ยน - บ้าน - ก่อน - ก่อน - เริ่ม' แม้ว่าจะใช้กลอุบายได้ แต่ก็แทบจะไม่เป็นที่ยอมรับเนื่องจากมัน ... ปรับเปลี่ยนหน้าแรกของผู้ใช้

คุณคิดว่ามีวิธีการอย่างใดอย่างหนึ่ง

  1. เปลี่ยนค่าปรับแต่งของผู้ใช้แบบไดนามิกก่อนที่ 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/

ใช้กรณีของคุณสมบัตินี้:

คุณต้องใช้ชื่อผู้ใช้เดียวกันบนเซิร์ฟเวอร์ระยะไกล (สามารถเข้าถึง distiguished โดยคีย์ rsa) และต้องการใช้การกำหนดค่า mc ที่คุณชื่นชอบโดยไม่มีการเขียนทับมัน เซสชันที่เกิดขึ้นพร้อมกันจะไม่รบกวนซึ่งกันและกัน

วิธีนี้ใช้ได้ดีเป็นส่วนหนึ่งของ sshrc-approach ที่อธิบายไว้ใน https://github.com/Russell91/sshrc


ข้อเสียเปรียบเล็กน้อยของโซลูชันนี้: หากคุณตั้งค่า MC_HOME เป็นไดเรกทอรีที่แตกต่างจากโฮมปกติของคุณ mc จะเพิกเฉยต่อเนื้อหาของ ~ / .bashrc ตามปกติตัวอย่างเช่นนามแฝงที่กำหนดเองที่คุณกำหนดไว้ในไฟล์นั้นจะไม่ทำงานอีกต่อไป วิธีแก้ปัญหา: เพิ่ม symlink ใน ~ / .bashrc ของคุณในไดเรกทอรี MC_HOME ใหม่
Cri

1

หากคุณหมายถึงคุณต้องการให้สามารถเรียกใช้ mc สองอินสแตนซ์ในเวลาเดียวกันพร้อมกับไดเรกทอรีการตั้งค่าที่แตกต่างกันได้เท่าที่ฉันสามารถบอกได้ว่าคุณไม่สามารถทำได้ เส้นทางถูกฮาร์ดโค้ด

อย่างไรก็ตามหากคุณหมายถึงคุณต้องการที่จะเปลี่ยนไดเรกทอรีการกำหนดค่าที่ใช้งานนี่เป็นแนวคิด (ทดสอบแล้วใช้งานได้) คุณอาจต้องการทำโดยไม่ต้อง mc ทำงาน:

  • สร้างไดเรกทอรีมีไดเรกทอรีย่อย$HOME/mc_confone
  • ย้ายเนื้อหาของ$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จะเห่าประมาณไฟล์ดังกล่าวไม่สำคัญ

หวังว่ามันชัดเจนว่าเกิดอะไรขึ้นที่นั่น - ชุดนี้กำหนดเส้นทางไดเรกทอรี config เป็น symlink ไม่ว่าการเปลี่ยนแปลงการกำหนดค่าใด ๆ ที่คุณทำและบันทึกจะเป็นoneไดเรกทอรีภายใน จากนั้นคุณสามารถออกและswitch_mc twoเปลี่ยนกลับเป็นค่าเดิมจากนั้นเริ่ม mc อีกครั้งทำการเปลี่ยนแปลงและบันทึก ฯลฯ

คุณสามารถหนีไปได้ด้วยการลบkillall mcและเล่นรอบ เนื้อหาการกำหนดค่าอยู่ในiniไฟล์ซึ่งจะถูกอ่านเมื่อเริ่มต้น (ดังนั้นคุณจะไม่สามารถสลับได้ทันที) มันจะไม่ถูกสัมผัสจนกว่าจะออกจนกว่าคุณจะ "บันทึกการตั้งค่า" แต่ที่ทางออกอาจถูกเขียนทับดังนั้นอันตรายที่นี่คือคุณลบสิ่งที่คุณทำก่อนหน้านี้หรือนอกเวลาทำงาน


ที่ใช้งานได้จริงความคิดของคุณค่อนข้างชัดเจนขอบคุณสำหรับเวลาของคุณอย่างไรก็ตามความคิดของฉันคือสามารถเรียกใช้การกำหนดค่า mc ที่แตกต่างกันภายใต้บัญชีเดียวกันโดยไม่รบกวนซึ่งกันและกัน ฉันควรระบุไว้ในคำถามของฉัน เส้นทางไปยัง config dir นั้นจริงแล้ว hardcoded แต่เป็น hardcoded RELATIVELY ไปยัง home dir ของผู้ใช้นั่นคือค่า $ HOME ดังนั้นการเปลี่ยนมันก่อนที่จะเริ่ม mc DOES เปลี่ยนตำแหน่ง config dir - ฉันได้ตรวจสอบแล้ว ข้อเสียคือ $ HOME stay จะเปลี่ยนไปตราบใดที่ mc ทำงานซึ่งสามารถแก้ไขได้หาก mc มี hook เริ่มต้นชนิดหนึ่งที่จะนำการกู้คืนกลับไปที่หน้าแรกดั้งเดิมให้เป็น
Tagwint

ฉันขยายคิวดั้งเดิมของฉันด้วยเงื่อนไข 'เวลาเดียวกัน' - มันไม่พอดีกับข้อ จำกัด ขนาดความคิดเห็นก่อนหน้าของฉัน
Tagwint
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.