2012-03-30 5 views
7

एक मामूली उदाहरण के रूप में, उपयोगकर्ता foo के ~/.bashrc में उपनाम है;मैंने उपयोगकर्ता ~/.bashrc में उपनाम जोड़ा लेकिन "sudo -u user -i 'alias_name'" अभी भी रिपोर्ट "कमांड नहीं मिला"?

alias ll='ls -l' 

sudo का उपयोग करना मैं देख सकता हूँ उर्फ ​​सेट है;

[email protected]:~$ sudo -u foo -i alias ll 
alias ll=`ls -l' 

लेकिन, मैं वास्तव में उपनाम का उपयोग नहीं कर सकता;

[email protected]:~$ sudo -u foo -i ll 
-bash: ll: command not found 

बैश फ़ंक्शन काम करने वाले कमांड काम करते हैं, ठीक है। क्या उपनामों को भी काम करने का कोई तरीका है?

उत्तर

3

इस in the Archlinux wiki को कैसे करें इसका एक शानदार उदाहरण है। अपने .bashrc

alias sudo="sudo " 

मुझसे पूछें कि यह क्यों काम करता है। मैंने अपने मैन पेज को भाग्य के बिना खोजा है, लेकिन यह अभी तक मुझे कभी विफल नहीं हुआ है।

> sudo ll 
total 60 
drwxr-xr-x 2 brice users 4096 Feb 4 16:17 classes 
drwxr-xr-x 3 brice users 4096 Mar 6 21:48 Desktop 
drwx------ 6 brice users 4096 Mar 28 21:32 Downloads 
drwx------ 25 brice users 4096 Mar 29 21:20 Dropbox 
drwxr-xr-x 2 brice users 4096 Mar 11 20:27 scripts 
drwxr-xr-x 2 brice users 4096 Mar 19 21:59 tmp 
+0

कि delightfully निराला है दिखेगा! एक लिंक प्रदान करने के लिए – Sorpigal

10

प्रयास करें:

alias sudo='sudo ' 

http://www.shellperson.net/using-sudo-with-an-alias/

+0

+1 जो बताता है * क्यों * यह काम करता है। – Sorpigal

+0

यह स्थानीय रूप से लॉग इन 'foo' के लिए काम करता है, लेकिन 'su -u foo' करने का प्रयास करने वाले उपयोगकर्ता 'बार' के लिए काम नहीं करता है। – CAB

+1

@ सीएबी: आलेख गोर से जुड़ा हुआ है क्यों बताता है। पिछली जगह चाल केवल तभी मदद करती है जब पहले उपनाम आदेश के तुरंत बाद तर्क भी उपनाम हो। यदि आप कहते हैं कि 'सुडो-आईएल', बैश देखता है कि '-i' उपनाम नहीं है, इसलिए यह उपनामों को विस्तारित करता है और निर्मित कमांड निष्पादित करता है। आपको संभवतः अपना इच्छित व्यवहार प्राप्त करने के लिए अपने दूसरे उपनाम को स्क्रिप्ट या खोल फ़ंक्शन में बदलना होगा। –

1

आप

alias sudo='sudo ' 

तो आगे जाना है और अपने कस्टम उपनाम जोड़ना ... उदाहरण के लिए जोड़ने के लिए सुनिश्चित करें। यदि नियमित रूप से आदेश है उपरोक्त आदेश के लिए

sudo rm ~/qwerty/removethis.txt 

उपनाम

alias your_custom_alias='sudo rm ~/qwerty/removethis.txt' 
संबंधित मुद्दे