आधी रात के कमांडर कॉन्फ़िगर स्थान स्थान स्टार्टअप विकल्प


11

यदि आप चलाते हैं mc -F तो आप देखेंगे कि [सिस्टम डेटा] कॉन्फिग डायरेक्टरी और [यूजर्स डेटा] कॉन्फिग डायरेक्टरी है

[सिस्टम डेटा]

Config directory: /etc/mc/

[उपयोगकर्ता का आधार - सामग्री]

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

पहला सिस्टम-वाइड है, दूसरा उपयोगकर्ता विशिष्ट है।

दूसरा उपयोगकर्ता के घर के स्थान पर निर्भर होने लगता है; दूसरे शब्दों में, यह इसके लिए बाध्य है। इसका मतलब है कि यदि आप (अस्थायी रूप से) एक वैकल्पिक कॉन्फ़िगरेशन के साथ mc शुरू करते हैं, तो उसी उपयोगकर्ता के रूप में जो आप इसे पहले नहीं कर सकते हैं / बदल रहा है (और exportआईएनजी) होम चर इसके पहले। यह 'चेंजिंग-होम-पूर्व-टू-स्टार्ट' वर्कअराउंड, हालांकि ट्रिक, शायद ही स्वीकार्य है, क्योंकि यह अच्छी तरह से ... उपयोगकर्ता होम को संशोधित करता है।

क्या आपको लगता है कि कोई रास्ता है

  1. Mc start होने से पहले उपयोगकर्ता का विन्यास dir को गतिशील रूप से बदलें (कमांड लाइन विकल्प सबसे उपयुक्त चीज़ होगी, लेकिन ऐसा प्रतीत नहीं होता है)

  2. Mc शुरू होने के ठीक बाद उपयोगकर्ता के लिए 'प्राकृतिक' होम को पुनर्स्थापित करें, यदि उपयोगकर्ता को डीआईआर स्थान बदलने का एकमात्र तरीका है

यदि एक साथ चल रहे हैं तो 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/

इस सुविधा का उपयोग करें:

आपको दूरस्थ सर्वर पर एक ही उपयोगकर्ता नाम साझा करना होगा (पहुंच rsa कुंजियों द्वारा निर्धारित की जा सकती है) और इसे अधिलेखित करने के लिए अपने पसंदीदा mc कॉन्फ़िगरेशन w / o का उपयोग करना चाहते हैं। समवर्ती सत्र एक-दूसरे को बाधित नहीं करते हैं।

यह https://github.com/Russell91/sshrc में वर्णित sshrc-approach के एक भाग के रूप में अच्छी तरह से काम करता है


इस समाधान की एक छोटी खामी: यदि आप अपने सामान्य गृह से भिन्न निर्देशिका का MC_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 onermऐसी किसी भी फाइल के बारे में भौंकेंगे, जो मायने नहीं रखती।

उम्मीद है कि यह स्पष्ट है कि वहाँ क्या हो रहा है - यह एक सिमिलिंक के रूप में एक निर्देशिका निर्देशिका पथ सेट करता है। अब आप जो भी कॉन्फ़िगरेशन परिवर्तन करेंगे और सहेजेंगे, वह oneडायरेक्ट इंट्री होगी । फिर आप बाहर निकल सकते हैं और switch_mc two, पुराने कॉन्फिग में वापस आ सकते हैं , फिर एमसी को फिर से शुरू कर सकते हैं, बदलाव कर सकते हैं और उन्हें बचा सकते हैं, आदि।

आप को हटाने killall mcऔर चारों ओर खेलने के साथ दूर हो सकता है ; कॉन्फ़िगरेशन सामान iniफ़ाइल में है, जो स्टार्ट-अप पर पढ़ा जाता है (ताकि आप इस तरह से फ्लाई पर स्विच न कर सकें)। यह तब तक बाहर नहीं निकलता है जब तक कि आप "सेटअप सहेजें" न करें, लेकिन बाहर निकलने पर इसे अधिलेखित किया जा सकता है, इसलिए यहां खतरा यह है कि आप उस चीज को मिटा देते हैं जो आपने पहले या बाहर चल रहे इंस्टेंस से किया था।


यह वास्तव में काम करता है, आपका विचार बहुत स्पष्ट है, आपके समय के लिए धन्यवाद, हालांकि मेरा विचार एक ही खाते में एक-दूसरे को हस्तक्षेप न करने के लिए अलग-अलग कॉन्फ़िगर किए गए एमसी को चलाने में सक्षम होना था। मुझे अपने प्रश्न में यह निर्दिष्ट करना चाहिए था। डीआईआर को कॉन्फ़िगर करने का मार्ग वास्तव में हार्डकोडेड है, लेकिन यह उपयोगकर्ता के घर डीआईआर के लिए हार्डकोडेड है, जो कि $ HOME का मूल्य है, इस प्रकार इसे बदलकर mc स्टार्ट करना शुरू कर देता है जो कि कॉन्फ़िगर dir लोकेशन को बदल देता है - मैंने इसे चेक किया है। दोष $ है, जब तक mc चलता है तब तक होम स्टे को बदल दिया जाता है, जिसे हल किया जा सकता है यदि mc के पास एक प्रकार का स्टार्टअप हुक हो, जो मूल होम में पुनर्स्थापित करने के लिए एक प्रकार का स्टार्टअप है
Tagwint

मैंने अपनी मूल q को 'समान समय' स्थिति के साथ बढ़ाया है - यह मेरी
मौजूदा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.