當我使用 sudo bash 時保留別名

當我使用 sudo bash 時保留別名

我有一台 Centos 5.5 伺服器,它有我自己的帳戶別名命令。當我這樣做時,sudo bash我仍然可以使用這些別名,我不必將別名添加到根的.bashrc.

我還有另一台伺服器是Centos 6.5。但是當我執行時sudo bash,它不會使用我登入的使用者的別名。有誰知道我在哪裡配置它以包含我使用時登入的使用者的別名sudo bash

答案1

將以下行加入 ~/.bashrc 中:

alias sudo='sudo '

來自 bash 手冊

別名允許在用作簡單命令的第一個單字時用字串替換單字。 shell 維護一個別名列表,可以使用 alias 和 unalias 內建指令設定和取消設定。

每個簡單命令的第一個單字(如果未加引號)將被檢查以查看它是否有別名。如果是這樣,該單字將被別名的文字替換。字元“/”、“$”、“`”、“=”以及上面列出的任何 shell 元字元或引用字元不得出現在別名中。取代文字可以包含任何有效的 shell 輸入,包括 shell 元字元。替換文字的第一個單字會進行別名測試,但與正在擴展的別名相同的單字不會再次擴展。例如,這意味著可以將 ls 別名為“ls -F”,並且 Bash 不會嘗試遞歸地擴展替換文字。如果別名值的最後一個字元是空格或製表符,則也會檢查別名後面的下一個命令字是否有別名擴充。

因此 Bash 只檢查指令的第一個單字是否有別名,之後的任何單字都不會被檢查。這意味著在像 sudo ll 這樣的命令中,bash 只檢查第一個單字 (sudo) 的別名,ll 會被忽略。我們可以透過在別名值末尾加上一個空格來告訴 bash 檢查別名後的下一個單字(即 sudo)。

答案2

使用sudo -E,這將導出您的環境。

相關內容