डिफ़ॉल्ट संपादक बदलें जब sudo visudo


23

करते समय sudo visudo, डिफ़ॉल्ट संपादक है nano
मैं इसे viया तो बदलना चाहता हूं vim

मैंने पहले से vimही डिफॉल्ट एडिटर बनाया है, और इसे geditएक vim.desktopफाइल के रूप में ~/.local/share/applications/या सही ढंग से एडिटिंग करके ~/.local/share/applications/mimeapps.listया फाइल को एडिट करके php, .txt, .c .c और .h फाइल्स को खोलने के विकल्प के रूप में उपयोग करते हैं /etc/gnome/defaults.list। हालांकि स्पष्ट रूप से यह लागू नहीं होता है nano

कोई सुराग ?


आपने जाँच की है man visudo?
20

मैंने इसे लिखने के बाद से कुछ और चीजों का पता लगाया है - मुझे उम्मीद है कि बाद में और जोड़ूंगा; लिनक्स डिस्टर्ब्यूशंस इसे अलग तरीके से हैंडल करते हैं।
वोल्कर सीगल

हां और मैंने अपने en-var VISUAL को vim में सेट किया है और .bashrc और inbash_profile में "Export" किया है और फिर शेल को सॉरी किया है लेकिन कोई फायदा नहीं हुआ। यहां तक ​​कि लॉग आउट किया और सुनिश्चित करने के लिए पुनः-सत्र में लॉग इन किया।
Cbhihe

2
मैंने sudo -E visudoजवाब में बाद में जोड़ा , क्या आपने कोशिश की? -E sudoसभी env var को हटाता नहीं है। ऐसा इसलिए होता है क्योंकि उबंटु में एक लाइन होती Defaults env_resetहै/etc/sudoers
वोल्कर सिएगेल

इसके अलावा, क्या तुमने कोशिश की update-alternativesमैं भी जोड़ा?
वोल्कर सिएगल

जवाबों:


19

समस्या यह नहीं है कि यह लागू नहीं होता है nano, यह है कि यह शेल पर लागू नहीं होता है:

बस VISUALपर्यावरण चर सेट करें :

export VISUAL=vim

स्थायी बनाने के लिए इसे भी ~ / .bashrc जोड़ें।

जैसा कि आप सामान्य रूप से विम का उपयोग करते हैं, दोनों सेट करें VISUALऔर EDITOR:

export VISUAL="vim"
export EDITOR="$VISUAL"

या अधिक POSIX- सही

VISUAL="vim" ; export VISUAL
EDITOR="$VISUAL" ; export EDITOR

मुझे लगता है nanoकि एक या दोनों चर का मूल्य था।

वास्तव में विडियो में संपादक का उपयोग करने के लिए, हमें इसे संभालने की आवश्यकता है sudoजो पर्यावरण के चर को सामान्य रूप से नहीं रखता है। विकल्प -Eबदल जाता है कि

sudo -E visudo

-Eयहां के बिना , आप nanoफिर से डिफ़ॉल्ट के साथ समाप्त हो जाएंगे


दो चर जहां नाम *.desktopया mime*यहां तक ​​कि मौजूद फ़ाइलों से पहले लंबे समय तक उपयोग करते हैं ।
(और प्रभावशाली बात यह है: वे वास्तव में एक सामान्य मानक के रूप में उपयोग किए गए थे ।)
उबंटू में, सिस्टम डिफ़ॉल्ट के साथ सेट किया गया लगता है sudo update-alternatives --config editor। यह वर्तमान एसोसिएशन को बदलने के लिए एक मेनू दिखाता है।


अनुभाग देखें ENVIRONMENTमें man visudo:

  VISUAL           Invoked by visudo as the editor to use

  EDITOR           Used by visudo if VISUAL is not set

1
क्या तुमने कोशिश की? डिफ़ॉल्ट रूप से sudoचल रहे कमांड के लिए पर्यावरण से अधिकांश पर्यावरण चर को चलाता है। VISUAL=vim sudo visudo(और आपके द्वारा सुझाए गए रूपांतर) मेरे लिए काम नहीं करते हैं और काम करने की उम्मीद नहीं की जानी चाहिए। sudo VISUAL=vim visudoहालांकि काम करता है। (मैंने अभी सुनिश्चित करने के लिए दोनों को फिर से कोशिश की है।) वैसे, VISUALऔर EDITORडिफ़ॉल्ट रूप से परेशान हैं, सेट नहीं है nanoVISUALऔर EDITORवह तंत्र नहीं है जिसके माध्यम से डिफ़ॉल्ट कॉन्फ़िगरेशन में visudoचयन nanoकिया जाता है (जैसा कि यह उन्हें दोष देता है, को छोड़कर, वे परेशान या खाली हैं, और आगे बढ़ते हैं)।
एलियाह कगन

3
इसके साथ काम करता है sudo -E visudo- जो निश्चित रूप से उत्तर में होना चाहिए, सही।
वोल्कर सेगेल

+1 और मैं उत्कृष्ट उत्तर, वोल्कर को स्वीकार करता हूं। "बेस्टेन डंक!" मुझे अभी भी -E ध्वज के साथ एक त्रुटि संदेश मिला, पर्यावरण चर पर पारित करने की अनुमति नहीं होने के बारे में, लेकिन फिर मैंने एक प्रतिबंधित एक्सेस उपयोगकर्ता से व्यवस्थापक-विशेषाधिकार और बिंगो के साथ मुकदमा किया! सब अच्छा काम करता है।
Cbhihe

ओह, मुझे एक और चीज़ जोड़ने में खुशी है जो गलत हो सकती है / मदद कर सकती है?) क्या आप Defaultअपने / etc / sudoers में विकल्पों (लाइनों के साथ ) की जांच कर सकते हैं ? मुझे लगता है कि एक विकल्प है जो मना करता है, लेकिन मेरी डिफ़ॉल्ट फ़ाइल में नहीं था।
वोल्कर सिएगल

@VolkerSiegel: मुझे लगता है कि आप env_reset डिफ़ॉल्ट को / etc / sudoers में संदर्भित करते हैं । यह सिर्फ मेरे मामले में सेट है।
Cbhihe

8

जैसा कि इस उत्तर में वर्णित है , जोड़ें

Defaults editor=/path/to/editor

को sudoers फ़ाइल

नोट: यह केवल तभी काम करेगा जब संपादित की जा रही फ़ाइल में Defaults editor=/path/to/editorपंक्ति हो या इसमें कोई फ़ाइल शामिल हो।

उदाहरण के लिए: visudo -f /etc/sudoers.d/my_sudoers_extensionनैनो के लिए डिफ़ॉल्ट होगा।


2
+1: अच्छा है, और मैंने इस पर ध्यान नहीं दिया था जब मैंने पहली बार यह धागा शुरू किया था, धन्यवाद।
Cbhihe

3

यदि आप कभी नैनो का उपयोग करने की योजना नहीं बनाते हैं, तो आप इसे केवल हटा भी सकते हैं। तब सिस्टम vi / vim को डिफ़ॉल्ट के रूप में उपयोग करेगा।

sudo apt-get purge nano

मुझे पता है कि यह आधिकारिक उत्तर नहीं है, लेकिन उबंटू स्थापित करने के बाद यह मेरे लिए पहली आज्ञाओं में से एक है।


यह निश्चित रूप से "नेक्रोपोस्टिंग" के रूप में योग्य है, लेकिन हे ... यार जवाब दिलचस्प है, इसके साथ यह उबंटू से संबंधित है। कुछ अन्य डिस्ट्रोस (उनके बीच ArchLinux) के पास केवल 1 स्थान पर स्थापित किया गया संपादक (ओं) है, इसलिए आपके पास न तो वह pbm है जिसका मैंने उबंटू के साथ सामना किया है, और न ही आपके द्वारा सुझाए गए उपाय का सहारा लेने की आवश्यकता है। मामले में (ubuntu + nano + vim) हाथ में, मुझे लगता है कि कई संपादकों के संदर्भ में विकल्पों की आवश्यकता हो सकती है। यह सच है कि किसी एक उपयोगकर्ता की प्रोफ़ाइल पर शायद ही कभी emacsऔर vimसक्रिय रूप से सह-अस्तित्व पसंद है । हालाँकि nanoऔर vimजंगली में एक साथ होते हैं ... रखो nano!
13

निश्चित रूप से सबसे अच्छा जवाब
botkop

emacsऔर vimखुशी से सहअस्तित्व करते हैं और लगातार उपयोग किए जाते हैं। nanoबस कीट की तरह है, जितनी जल्दी इसे सिस्टम से हटा दिया जाए उतना बेहतर है। मैं समझता हूं कि कुछ लोगों को यह सहज लग सकता है, लेकिन यह उत्तर पूरी तरह से मान्य है।
9
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.