一般來說,sudo會忽略通過.bashrc文件、.bash_aliases文件或者alias命令設(shè)置的別名命令(aliased commands)。
比如,我們經(jīng)常將ll用作ls -lh命令的別名。然后,我們輸入ll,終端將會返回一個關(guān)于當(dāng)前目錄的長列表。但是,當(dāng)我們輸入sudo ll時,終端將會返回:
$sudoll
=>sudo:ll:commandnotfound
解決方案
我們給shutdown命令創(chuàng)建一個別名,當(dāng)普通用戶運行的時候嘗試輸入這個別名去關(guān)機,我們可以看到系統(tǒng)不會關(guān)機。想要運行/sbin/shutdown需要root權(quán)限,然而sudo會完全忽略shutdown的這個別名。解決辦法是,我們需要添加另一個別名:
aliassudo='sudo'
sudo后面的那個空格將會告訴bash,去檢查跟在空格后面的命令是否也是一個別名。bash手冊(通過man bash查看)上面是這么描述的:
If the last character of the alias value is a blank, then the next command word following the alias is also checked for alias expansion. 如果別名值的最后一個字符是空格,將會檢查”跟在別名后的下一個命令”是否也是別名擴(kuò)展。
下面是我機器.bash_aliases文件中的一些別名設(shè)置:
#Shortcuts
aliasll='ls-lh'
aliasla='ls-lhA'
aliasl='ls'
aliasc='clear'
aliasx='exit'
aliasq='exit'
#Don'trunshutdownifrtorrentisrunning-aslongasthere'sascreenwith"tor"initsname,shutdownwon'trun(unlessyoucall/sbin/shutdown,orunaliasit)
aliasshutdown='/home/james/scripts/safe.shutdown.sh'
#Whenusingsudo,usealiasexpansion(otherwisesudoignoresyouraliases)
aliassudo='sudo'
審核編輯 :李倩
-
終端
+關(guān)注
關(guān)注
1文章
1204瀏覽量
30907 -
Shutdown
+關(guān)注
關(guān)注
0文章
20瀏覽量
50651
原文標(biāo)題:sudo后使用別名
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
CAD快捷鍵與CAD命令別名的區(qū)別
位帶及位帶別名區(qū)的關(guān)系
在 Linux 中運行 sudo 命令不需要密碼
如何解決sudo與重定向的權(quán)限拒絕的問題
如何使用sudo命令以及選項
值得考慮的4個最佳Linux sudo命令替代方案
Linux中root和sudo的用法與區(qū)別
Linux命令su和sudo的區(qū)別
首個Rust版sudo發(fā)布!

什么是sudo rm -rf?為什么這個命令如此危險?
ROS主控如何創(chuàng)建設(shè)備別名

微軟正式發(fā)布適用于Windows的Sudo

評論