Sudo
發出 sudo su 命令後使用別名
我在 AIX 7.1 上。
我在我的個人 .profile 中定義了一堆別名。
alias df='df -k' alias cl=clear alias h=history alias ll='ls -al' alias lt='ls -latr' alias ls='ls -Fa' alias psj='ps -ef | grep java'
如果我發出“sudo su”或“sudo su other_user”命令,我將無法使用這些別名。我的印像是使用不帶’-‘的’sudo su’(sudo su -)會使我在使用我的個人.profile時成為root?
jg10371@asdepdm1: /home/jg10371 $ ll total 88 drwx------ 3 jg10371 unxusers 4096 May 29 09:21 ./ drwxr-xr-x 154 bin bin 12288 May 29 09:35 ../ -rw------- 1 root system 200 Jul 04 2010 .bash_history -rw-r--r-- 1 jg10371 unxusers 1943 May 29 09:35 .profile -rw------- 1 jg10371 unxusers 6944 May 29 09:36 .sh_history drwx------ 2 jg10371 unxusers 256 May 28 11:06 .ssh/ -rw------- 1 jg10371 unxusers 44 May 28 12:21 .vas_disauthcc_9168 -rwx------ 1 jg10371 unxusers 28 May 28 12:21 .vas_logon_server* -rwx------ 1 jg10371 unxusers 18 Mar 28 18:06 .vi_history* jg10371@asdepdm1: /home/jg10371 $ sudo su Password: jg10371@asdepdm1: /home/jg10371 $ ll ksh: ll: not found. jg10371@asdepdm1: /home/jg10371
好吧,正如您已經註意到的那樣,事實並非如此。手冊頁條目顯示“sudo - 以另一個使用者身份執行命令”,這意味著別名和 bash 變數將相應更改。並且在執行“sudo ll”時,系統會注意到,使用者 root 對 ll 一無所知。
如果您希望您的別名可作為 root 使用,您可以將定義復製到 root 配置文件或創建一個單獨的別名文件並使用 source 命令包含它。(可以包含使用者配置文件本身,但其中可能有一些不應被 root 採用的行。)
是的,實際上登錄到不同的帳戶(在這種情況下為 root)將創建一個新會話,並且設置將來自 root
.bashrc
或.kshrc
文件。您可以在以下內容中看到這一點:$ alias $ ... output has over 100 aliases $ sudo su [sudo] password for durrantm: root@Castle2012:/tmp/user/1000/x# alias # <- Only 7 aliases now! alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l='ls -CF' alias la='ls -A' alias ll='ls -alF' alias ls='ls --color=auto' root@Castle2012:/tmp/user/1000/x# cat ~/.bashrc # ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples ... # enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" alias ls='ls --color=auto' #alias dir='dir --color=auto' #alias vdir='vdir --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' fi # some more ls aliases alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' ... root@Castle2012:/tmp/user/1000/x#
但是,您可以使用 sudo -E導出您的環境 - 僅用於該會話。
您可以通過將別名定義放在
/etc/bash.bashrc # (You'll need to edit it with sudo!) # /etc/profile for ksh
並且您還可以添加條件邏輯以僅在使用者名與 root 或您想要的使用者匹配時執行此操作。