在linux下操作的時候經常會遇到,bash: service: command not found這個錯誤,以前在網上找了,照着弄了,也沒細看原因,今天又碰到這個問題,就順便研究一下。
1、通常這種情況是出現在 通過su root命令來進行操作的時候。
su或者su root 只是相當於以root用戶身份來操作,實際的系統環境並沒有切換到root用戶的環境,而只是當前登錄用戶;
su -,-l,--login都是已經完全的切換的root環境下,相當於完全用root用戶登錄。
這里就看下su命令:su --help
看到su命令的幫助信息:
- 用法:su [選項]... [-] [用戶 [參數]...]
- Change the effective user id and group id to that of USER.
- -, -l, --login make the shell a login shell
- -c, --command=COMMAND pass a single COMMAND to the shell with -c
- --session-command=COMMAND pass a single COMMAND to the shell with -c
- and do not create a new session
- -f, --fast pass -f to the shell (for csh or tcsh)
- -m, --preserve-environment do not reset environment variables
- -p same as -m
- -s, --shell=SHELL run SHELL if /etc/shells allows it
- --help 顯示此幫助信息並退出
- --version 輸出版本信息並退出
- 單獨的 - 代表 -l。如果未給出[用戶],則假定為 root。
2、service命令目錄在/sbin/下
故解決此問題有兩種方式:
a、直接使用su - root來切換到root用戶,然后使用 service
b、使用su root切換到root用戶,並同時使用/sbin/service來操作,如/sbin/service mysql restart.