"Sudo cd" काम क्यों नहीं करेगा?


जवाबों:


56

cdशेल निर्मित है। sudoकेवल निष्पादनों के साथ काम करता है। आप कर सकते हैं, sudo sh -c 'cd dirname'लेकिन जैसे ही शेल बाहर निकलता है, आप उस निर्देशिका में वापस आ जाते हैं जिसे आपने शुरू किया था। यदि आप कहते हैं कि आप इसे पूरा करने की कोशिश कर रहे हैं तो मैं आपको ऐसा करने का एक तरीका खोजने में मदद कर सकता हूं।


2
लेकिन तब sudo pwdभी काम नहीं करेगा? (मैं हमेशा सोचा है कि sudo cd करता है काम करते हैं, लेकिन आप केवल के बाद परिणाम नहीं देख रहे हैं sudoरिटर्न। लेकिन है कि बस एक जंगली अनुमान। हो सकता है कि न था cdऔर न ही pwdवास्तव में एक मैक। रनिंग पर निर्मित बैश में हैं which cd करता है वास्तव में मुझे परिणाम देती है। रनिंग sudo cd /मुझे एक त्रुटि नहीं देता है, लेकिन वास्तव में एक बदले हुए कार्यशील निर्देशिका में परिणाम नहीं करता है।)
अर्जन

2
@ अर्जन: pwdएक बाहरी निष्पादन योग्य भी है इसलिए यह काम करेगा। ध्यान दें कि कुछ प्रणालियों पर, एक cdनिष्पादन योग्य है, लेकिन यह ज्यादातर बेकार है। type -a cdवैसे इसका उपयोग अधिक जानकारीपूर्ण तरीके से करने का प्रयास करें which
डेनिस विलियमसन

1
अच्छा! मेरे मैक पर और type -a cdदोनों पर दिखाता है । और इसी तरह और । और दोनों और मुझे एक परिणाम देते हैं। हालाँकि, केवल पैदावार , और मुझे दिखाता है । तो, मुझे लगता है कि सवाल यह है: क्या ओपी को एक त्रुटि संदेश मिलता है, या क्या ओपी बिना किसी त्रुटि के काम नहीं देखता है ? (या: ओएस ओपी का उपयोग क्या है।)cd is a shell builtincd is /usr/bin/cdpwdechosudo pwdsudo echo "Hello world"type -a returnreturn is a shell builtinsudo return 3sudo: return: command not foundcd
अर्जन

sudo sh -c 'cd dirname'मेरे लिए कुछ नहीं करता है।
पीटर निडरविज़र

1
@ अर्जन मैं स्पष्टीकरण पाया: यह एक गहरी संगतता हैक की तरह कुछ है। यह अपने कार्य नहीं करता है, लेकिन यह उन दुष्प्रभावों के बारे में आया है जो वास्तविक cdहैं। और यह तब विफल होने के बजाय कुछ नहीं कर सकता है जब मौजूदा शेल में cdकमांड नहीं है । कोई भी शेल जो कभी भी मनुष्यों द्वारा उपयोग किया जा सकता है cd, जिसमें शामिल है /bin/sh। लेकिन एक प्रोग्राम जो है, ऑपरेटिंग सिस्टम कर्नेल से देखा जाता है, एक शेल उस से बहुत सरल हो सकता है, यहां तक ​​कि कोड की केवल कुछ पंक्तियाँ। देखें कि cdबाहरी कमांड का क्या मतलब है ?
वोल्कर सीगल

72

इसके बजाय sudo -sरूट शेल शुरू करने के लिए और फिर cdडायरेक्टरी में प्रयोग करके देखें।
जब आप रूट के रूप में कर रहे हों, तो दबाएं CtrlDया टाइप करें exit


जैसा कि अर्जन नीचे अपनी टिप्पणी में संकेत देता है, यह ध्यान रखना महत्वपूर्ण है कि जड़ के रूप में, एक आसानी से आवश्यक सिस्टम घटकों को नुकसान पहुंचा सकता है। देखभाल के साथ प्रयोग करें!


4
लेकिन: सावधान रहें, एक बार जड़ है ...
अर्जन

7

आप बस suरूट बन सकते हैं और फिर cdआप सभी चाहते हैं ... मुझे पता है कि एक उत्तर पहले ही स्वीकार कर लिया गया है, लेकिन अगर कोई सूडो सूची में नहीं है, तो यह एकमात्र विकल्प है।


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