RedHat/CentOS 系統為安全考量,預設不將 /sbin、/usr/sbin 加入一般使用者與 root 的 PATH 環境變數,導致 ifconfig、netstat、fdisk 等系統管理指令提示 command not found。本文提供三種層級的永久/臨時修復方案。
ifconfig 實際路徑:/sbin/ifconfigecho $PATH 未包含 /sbinexport PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
登出或重開終端機失效。
# 編輯 ~/.bash_profile
vi ~/.bash_profile
# 找到 PATH 行,修改為:
PATH=$PATH:$HOME/bin:/sbin:/usr/sbin:/usr/local/sbin
export PATH
# 立即生效
source ~/.bash_profile
# 編輯 /etc/profile
vi /etc/profile
# 檔案末尾新增:
export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
# 立即生效
source /etc/profile
RedHat /etc/profile 預設有條件判斷:
# 原始碼片段
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi
問題:僅當 EUID=0 (root) 才加入 /sbin。使用 su 切換 root 時 EUID 仍為原使用者 ID,導致 root 環境也缺少 /sbin。
# 修改 /etc/profile
# Path manipulation
#if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
#fi
儲存後 source /etc/profile 或重新登入生效。
/sbin/ifconfig~/.bashrc):alias ifconfig='/sbin/ifconfig'ip addr show (iproute2 套件,現代替代品)
/etc/profile 移除條件判斷),確保任何方式取得 root 權限皆有完整 PATH~/.bash_profile) 或方案四 (別名)/sbin/ifconfig),避免依賴環境變數導致移植性問題ip、ss、lsblk 等 iproute2/util-linux 新指令,功能更強、輸出可解析RedHat 系列刻意限制 PATH 是安全設計。理解 pathmunge 機制與 EUID 判斷邏輯,選擇適合層級的修復方案,或轉用現代指令工具組,徹底解決 command not found 困擾。
CentOS 6.0 手动升级至 6.2:替换 163 源与 yum update 实战
Ubuntu 實現視窗左右分屏:wmctrl + Shell 腳本自動計算解析度並平鋪
Linux eCryptFS 文件加密實戰:從安裝到掛載的完整指南
Linux 檔案字元編碼轉換實戰:convmv 批次修正檔名、iconv 轉換檔案內容、Vim 即時另存編碼
紅旗 Linux 6.0 安裝 VirtualBox 完整教學:從下載到建立虛擬機
SUSE Linux zypper 套件管理完整指南:指令語法、倉庫管理、安裝移除、模式操作、Shell 模式
Linux 磁碟故障導致系統運行緩慢?排查 RAID 快取電池失效案例實錄
Linux 安裝配置 NetPas 遊戲加速器:VirtualBox + Windows XP + NAT32 完整方案