1. 程式人生 > >su 和su -的區別

su 和su -的區別

  我一直是習慣使用su username來切換使用者的,而且並不知道su和su -有什麼區別,一直以為是沒啥區別的,但是在一個測試中,在測試的同事的指導下,他說你su - ××× 之後×××,那一刻突然福至心靈覺得可能二者是有區別的,然後執行了su - 使用者 之後,果然得到了su 使用者的時候得不到的結果。。。。。然後還發現,以前執行db2的命令要cd /opt/IBM/db2/V9.7.5/,然後bin/db2 ×××真的有夠麻煩的,但是su -之後,直接db2就可以執行命令了,所以有必要來分析一下這兩個命令到底有什麼區別。

su命令和su -命令最大的本質區別就是:
- 前者只是切換了root身份,但Shell環境仍然是普通使用者的Shell


- 而後者連使用者和Shell環境一起切換成root身份了。只有切換了Shell環境才不會出現PATH環境變數錯誤
- su切換成root使用者以後,pwd一下,發現工作目錄仍然是普通使用者的工作目錄;而用su -命令切換以後,工作目錄變成root的工作目錄了。用echo $PATH命令看一下su和su -以後的環境變數有何不同。以此類推,要從當前使用者切換到其它使用者也一樣,應該使用su -命令。

  • 在LINUX和AIX系統上還是有一些區別,AIX上一定要su -

  • 不帶-的su不會讀取目標使用者的環境配置檔案,帶-的su才會讀

去哪裡讀取配置檔案?

使用su切換到root:

[ltt@db22 Desktop]$ pwd
/home/ltt/Desktop
[ltt@db22 Desktop]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/ltt/bin
[ltt@db22 Desktop]$ su
Password: 
[root@db22 Desktop]# pwd
/home/ltt/Desktop
[root@db22 Desktop]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:
/usr/sbin:/sbin:/home/ltt/bin

使用su -切換到root:

[ltt@db22 Desktop]$ pwd
/home/ltt/Desktop
[ltt@db22 Desktop]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/ltt/bin
[ltt@db22 Desktop]$ su -
Password: 
[root@db22 ~]# pwd
/root
[root@db22 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

PATH的配置檔案

一般PATH在HOME/.bashrcHOME/.bash_profile中設定,我們來看一下

[[email protected] ~]$ pwd
/home/ltt
[[email protected] ~]$ ls -la
total 156
drwx------. 26 ltt  ltt  4096 Jul 31 11:55 .
drwxr-xr-x.  6 root root 4096 May 10 10:49 ..
drwxrwxr-x.  2 ltt  ltt  4096 Apr 10 11:37 .abrt
-rw-------.  1 ltt  ltt    31 Jul 31 11:46 .bash_history
-rw-r--r--.  1 ltt  ltt    18 Feb 22  2013 .bash_logout
-rw-r--r--.  1 ltt  ltt   176 Feb 22  2013 .bash_profile
-rw-r--r--.  1 ltt  ltt   124 Feb 22  2013 .bashrc
... ... ...

.bashrc檔案

[[email protected] ~]$ cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

# User specific aliases and functions
[root@db22 ~]# cat .bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

.bash_profile檔案

[[email protected] ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
[[email protected] ~]# cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

所以讀取的配置的檔案應該是 .bash_profile檔案,這個檔案中會匯入 .bashrc的定義。.bashrc檔案主要定義一些命令別名和函式,PATH變數設定在.bash_profile檔案中。

相關推薦

Linux學習-- su - su區別深入解析

讀取 4.6 用戶 ble 運行 系統 export 非交互 交互 su - 和su 的區別--也即交互式登錄和非交互式登錄一、簡單介紹 交互式: 直接通過終端輸入賬號密碼登錄等 變量,別名等不會繼承上一級shell,都會重新讀取 非交互式:圖形化界面下打

login shellnologin shell的區別以及susu

Login shell與nologin shell的區別 說下定義,其實很好理解。Login shell就是你進入shell是需要輸使用者名稱密碼的,比如你啟動圖形介面最後一步需要你輸入使用者名稱密碼,只有你輸入正確,才能進入桌面,這進入的就是一個login shell。另

su su -的區別

  我一直是習慣使用su username來切換使用者的,而且並不知道su和su -有什麼區別,一直以為是沒啥區別的,但是在一個測試中,在測試的同事的指導下,他說你su - ××× 之後×××,那一刻突然福至心靈覺得可能二者是有區別的,然後執行了su

Linux中susu -區別,別再傻傻分不清

寫在前面   如果你不清楚su和su -切換使用者的區別,你一定會遇到在使用su切換使用者執行命令出現報錯"command not found"感到驚訝。分明之前這個指令執行的好好的,為什麼現在就報錯了呢?關鍵原因就在於你不清楚su和su -命令使用的區別。 su與su -區別   su和

su su -

root logs ash 改變 變量 light div gin echo 單純使用su切揣到root,讀取變量的方式 是non-login shell,這種方式下很多的變量都 不會改變,尤其是PATH,所以root用的很多命令都只能用絕對路徑來執行,這種方式只是切換

su su - 命令有何不同

本質 tro shel 最大的 錯誤 path環境變量 命令 su - pwd su命令和su -命令最大的本質區別就是:前者只是切換了root身份,但Shell環境仍然是普通用戶的Shell;而後者連用戶和Shell環境一起切換成root身份了。只有切換了Shell環境才

linux 中切換使用者:susu -的使用環境變數詳解

大部分Linux發行版的預設賬戶是普通賬戶,而更改系統檔案或者執行某些命令,需要root身份才能進行,這就需要從當前使用者切換到root使用者,Linux中切換使用者的命令是su或su - 前者只是切換root身份,但shell環境仍然是普通使用者的shell; 而後者連使

susudo命令的區別

exe disk 驗證 參與 left 受限 n) execute 讀取文件 linux su和sudo命令的區別 一. 使用 su 命令臨時切換用戶身份 1、su 的適用條件和威力   su命令就是切換用戶的工具,怎麽理解呢?比如我們以普通用戶beinan登錄的,但要

Linux下管理員許可權獲取(susudo的區別

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Linux學習筆記RHEL 7(十三)--Linux中susu -sudo的區別

su 切換到root使用者,但是並沒有轉到root使用者家目錄下,即沒有改變使用者的環境。 su - 切換到root使用者,並轉到root使用者的家目錄下,即改變到了root使用者的環境。 這個涉及到不同使用者下的環境變數的配置。 sudo 通過sudo,我們能把

linux中susudo的區別

root使用者 su和sudo都用於執行具有root許可權的命令。root使用者基本上等同於Windows上的管理員使用者 - root使用者具有最大許可權,可以對系統執行任何操作。Linux上的普通使用者以較低的許可權執行 - 例如,他們無法安裝軟體或寫入系統目錄。 要執行需要這些

linux susudo命令的區別 -【linux學習筆記】

linux su和sudo命令的區別  首先,兩個縮寫,  su : switch user                                 sudo : super user do ! 一. 使用 su 命令臨時切換使用者身份 1、su 的適用

su sudo su區別

su <user>執行該命令,需要輸入password,它是<user>中定義的使用者的password,即,要變換成的使用者的password。(如果已經用root登入,則無需輸入password)該命令改變user id,執行過後,以&l

linux的su,su - sudo的區別

有錯的地方,或者不同意見的,煩請留言,或者發郵箱。 郵箱地址:[email protected] ————————————————————————————————— su,就是switch user,即轉換使用者的意思。 sudo的出現只是為了讓su安全一點,rm命令用起來

su sudo 的區別,並導致install出錯

Author: wmmwang(unc,王敏敏)Environment:fedora8            arm-linux-gcc 3.4.1Minigui: 1.3.3Date:2008-11-24    按照以前經驗,把要改的地方改好。接著make,沒的問題。   

susudo的區別與使用, 如果有時提示說許可權不夠, 而使用sudo後也同樣提示,可以試試su

這個算是比較經典的講解了, 有說明王有註釋。 su和sudo的區別與使用 一. 使用 su 命令臨時切換使用者身份1、su 的適用條件和威力su命令就是切換使用者的工具,怎麼理解呢?比如我們以普通使用者beinan登入的, 但要新增使用者任務,執行useradd ,bein

susudo的區別與使用,su命令,linux命令

系統管理 退出 name 用戶登錄 表示 chan 關聯 resolv mas su和sudo的區別與使用 一. 使用 su 命令臨時切換用戶身份 1、 su 的適用條件和威力 su命令就是切換用戶 的工具,怎麽理解呢?比如我們以普通用戶beinan登錄的,但要

linux權限之susudo的差別

進行 admins 是否 roo lai 表示 sudoers 還記得 平時 我們都知道非常多的文件都僅僅有root有權限來改動,那麽在我們平時的開發過程中都建議使用一般賬號來登錄進行開發。還記得前面說到的ssh嗎。我們也是將同意root登錄設置成no。

susudo命令及限制root遠程登錄

su sudo 限制root遠程登錄 su命令 切換用戶 加-徹底進入用戶,不加-進入不徹底 [root@aminglinux-02 ~]# su aming [aming@aminglinux-02 root]$ whoami aming [aming@aminglinux-02 root]$

Linux 系統中用戶切換(su user與 su - user 的區別

b2c 技術分享 oot 當前 的區別 tcs 一行 通過 reserve 1,su命令 (su為switch user,即切換用戶的簡寫) 格式:su -l USERNAME(-l為login,即登陸的簡寫,其中l可以省略) 如果不指定USERNAME(用戶名