解決sudo用戶找不到環境變量的問題


出於安全方面的考慮,使用sudo執行命令將在一個最小化的環境中執行,環境變量都重置成默認狀態。所以PATH這個變量不包括用戶自定義設置的內容
在sudo用戶的主目錄里的.bashrc中添加如下內容即可解決

$ vim ~/.bashrc

alias sudo="sudo env PATH=$PATH"

有這樣一個shell腳本,其內容如下,沒有給其x權限

vim test.sh

#!/bin/bash

echo "${PATH}"
# 執行該腳本,可以看到echo輸出的結果
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ bash test.sh
/opt/ossutil:/opt/openresty/nginx/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/jdk1.8/bin:/opt/jdk1.8/jre/bin:/home/test_ops/.local/bin:/home/test_ops/bin
# 但是加上sudo,上述結果就不顯示了,而是一個系統默認的${PATH}變量結果
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ sudo bash test.sh
/sbin:/bin:/usr/sbin:/usr/bin
# 因其沒有x權限,所以無法這樣執行
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ sudo ./test.sh
sudo: ./test.sh: command not found
# 給該腳本加上x權限
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ chmod a+x test.sh
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ ll
total 4
-rwxrwxr-x 1 test_ops test_ops 28 Sep 11 11:55 test.sh
# 可以執行,但結果相同
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ sudo ./test.sh
/sbin:/bin:/usr/sbin:/usr/bin
# 在用戶的主目錄里的.bashrc中添加如下內容
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ vim ~/.bashrc

alias sudo="sudo env PATH=$PATH"

# 退出登陸后再次執行,其結果正是自己想要的效果
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ sudo ./test.sh
/opt/ossutil:/opt/openresty/nginx/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/jdk1.8/bin:/opt/jdk1.8/jre/bin
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ sudo bash test.sh
/opt/ossutil:/opt/openresty/nginx/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/jdk1.8/bin:/opt/jdk1.8/jre/bin
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ bash test.sh
/opt/ossutil:/opt/openresty/nginx/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/jdk1.8/bin:/opt/jdk1.8/jre/bin:/home/test_ops/.local/bin:/home/test_ops/bin
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$ ./test.sh
/opt/ossutil:/opt/openresty/nginx/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/jdk1.8/bin:/opt/jdk1.8/jre/bin:/home/test_ops/.local/bin:/home/test_ops/bin
[test_ops@iZ2zej3o3e9be3aoukimfzZ ~]$

參考連接:https://blog.csdn.net/jiangxuege/article/details/82592258


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM