zsh - <tab> पर बाइनरी पथ का पूरी तरह से विस्तार करें


10

मेरे वर्तमान zsh व्यवहार में, "sudo" टाइप करने के बाद टैब मारना बस एक स्थान जोड़ता है।

$ sudo ...

मैं वास्तव में चाहता हूं कि यह टैब के लिए पूरी तरह से बाइनरी के पथ का विस्तार करने के लिए है, जब मैं टैब हिट करता हूं, तो यह निष्पादित होता है, जिससे मुझे यह देखने की अनुमति मिलती है कि क्या चलाया जाएगा:

$ /usr/bin/sudo ...

इसका उद्देश्य उस मामले से बचाव करना है जहां मेरी मशीन पर स्थानीय उपयोगकर्ता को हैक किया गया है, मेरे $PATHचर में एक प्रविष्टि जोड़ी गई है, और 'sudo' एक दुर्भावनापूर्ण प्रोग्राम चलाता है, जो रूट के लिए एक आसान वृद्धि होगी।


एक और समाधान है जिसमें रिबाइंडिंग टैब शामिल नहीं है। कमांड के नाम के साथ कमांड नाम को प्रेप करें और कमांड के =बाद टैब दबाएं, और यह कमांड नाम को पूर्ण पथ में विस्तारित करेगा।
मिशा आरिफिएव

जवाबों:


7

bindkeyZsh कमांड की तरह बाइंड करने के लिए बिलिन कमांड का उपयोग करें , जैसे:

bindkey "^I" expand-cmd-path 

"^I"टैब कहां है आप इस लाइन को अपनी ~/.zshrcफ़ाइल में छोड़ सकते हैं । चेतावनी: यह तर्कों के स्वत: पूर्णता को तोड़ देगा।


चीयर्स! स्पष्ट रूप से यह एक आदर्श समाधान नहीं है, इसलिए मैंने इसे इसके बजाय Ctrl-O के लिए बाध्य किया है। हालाँकि, ऐसे कई बायनेरिज़ नहीं हैं, जो पासवर्ड इनपुट लेते हैं (sudo, ssh, gpg, ...), इसलिए मैं जब भी मैं उनमे से किसी एक का उपयोग कर रहा हूँ, तो Ctrl-O को हिट करने के लिए खुश हूँ। मुझे यह भी इंगित करना चाहिए कि यह पूरी समस्या को हल नहीं करता है क्योंकि मेरे खाते तक पहुंच रखने वाला कोई भी व्यक्ति .zshrc या xmonad.hs के माध्यम से इसे वापस ले सकता है, लेकिन मुझे वहां कुछ रास्ता मिल जाता है!
अली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.