为什么我用sudo su 登录root,一直显示sudo command in macnot found

为什么我用sudo su 登录root,一直显示command not found_百度知道
为什么我用sudo su 登录root,一直显示command not found
我有更好的答案
建议你去论坛看看攻略我推荐你款不错的手机ROOT软件应用宝应用宝全新版本全新体验在应用宝中您可以享受众多手机使用功能刷机Root备份截屏等样样有更有手机优化功能玩转安卓手机从应用宝开始。
采纳率:95%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)求助:sudo执行自己写的shell脚本提示command not found(已解决,答案在11,15楼) - 查看主题 & Ubuntu中文论坛
&[ 15 篇帖子 ]&
&文章标题 : 求助:sudo执行自己写的shell脚本提示command not found(已解决,答案在11,15楼)发表于 :
15:22帖子: 344
我的Ubuntu是10.04,我自己写了个脚本,是定时休眠的,如下代码:#!/bin/shecho &hibernate --lock-console-as zym&|at $1脚本文件位于/home/zym/bin目录下。我已经通过修改~/.bashrc和/root/.bashrc修改了PATH变量,如下:zym@zym-freedom:~$ $PATHbash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zym/bin: 没有那个文件或目录这是su到root下的$PATHroot@zym-freedom:/home/zym# $PATHbash: /home/zym/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games: 没有那个文件或目录两个都有/home/zym/bin路径了。用zym用户在脚本文件目录之外执行脚本文件,正常zym@zym-freedom:~$ pwd/home/zymzym@zym-freedom:~$ autosleep.sh &now&warning: commands will be executed using /bin/shjob 80 at Sun Jun 27 09:30:00 2010zym@zym-freedom:~$ 但是因为hibernate命令必须用root权限来执行,所以如上并没有执行休眠。下面用sudo来执行脚本zym@zym-freedom:~$ pwd/home/zymzym@zym-freedom:~$ sudo autosleep.sh &now + 10minutes&[sudo] password for zym: sudo: autosleep.sh: command not foundzym@zym-freedom:~$ 结果就出现找不到命令的提示。如果使用完整路径来执行脚本,则成功zym@zym-freedom:~$ sudo /home/zym/bin/autosleep.sh &now + 10minutes&warning: commands will be executed using /bin/shjob 81 at Sun Jun 27 09:43:00 2010zym@zym-freedom:~$ sudo atq81 Sun Jun 27 09:43:00 2010 a rootzym@zym-freedom:~$ atrm 8181: Not ownerzym@zym-freedom:~$ sudo atrm 81zym@zym-freedom:~$ 我在论坛里搜了,有的说是PATH路径的问题,我就都改成上面那样,而且注销了重新登录了。还是不行,还有的说是脚本文件权限的问题,我都用&chmod +x XXX.sh&改了,如下:zym@zym-freedom:~/bin$ ls -l总计 8-rwxr-xr-x 1 zym zym 61
23:54 attry.sh-rwxr-xr-x 1 zym zym 55
09:02 autosleep.sh还是不行。请问想要在任意目录里用sudo+文件名 执行脚本文件要如何设置?谢谢!
_________________您好,请多关照!
9:39,总共编辑了 2 次
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found发表于 :
8:19帖子: 7446
送出感谢: 0 次
就是没找到,你说怎么办吧
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found发表于 :
15:22帖子: 344
冲浪板 写道:就是没找到,你说怎么办吧我的意思是脚本的路径已经在ROOT的$PATH里了,为啥还是找不到呢?是还要设置哪里吗?
_________________您好,请多关照!
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found发表于 :
23:17帖子: 61
送出感谢: 0 次
接收感谢: 0 次
楼主在用临时性的方法( 如:PATH=$PATH:/home/zym/bin ) 设置完root的PATH后注销了root账户,所以对PATH的修改就失效了不信我们可以做实验代码:$sudo -i#PATH=$PATH:/home/zym/bin#echo &$PATH&/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zym/bin#exit$sudo -i#echo &$PATH&/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games所以就出现了代码:zym@zym-freedom:~$ sudo autosleep.sh &now + 10minutes&[sudo] password for zym:sudo: autosleep.sh: command not found从网上抄的,要长期使用,在全局文件 /etc/profile 中或用户自定义文件 ~/.bash_profile 中添加命令PATH=$PATH:/home/zym/bin即可
_________________伊吹风子的邻居常说:那孩子是个普通的地球人
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found发表于 :
15:22帖子: 344
谢谢楼上的,我试了,可是好像还是不行。我在/etc/profile文件里改了,并且把~/.bashrc和 /root/.bashrc文件里我之前加的路径统统注释掉,然后重启。重启到了桌面后我立即点出终端实验,结果如下:代码:zym@zym-freedom:~$ $PATHbash: /home/zym/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zym/bin: 没有那个文件或目录zym@zym-freedom:~$ sudo $PATH[sudo] password for zym: sudo: /home/zym/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zym/bin: command not foundzym@zym-freedom:~$ sudo autosleep.sh &now + 10minutes&sudo: autosleep.sh: command not foundzym@zym-freedom:~$ autosleep.sh &now + 10minutes&warning: commands will be executed using /bin/shjob 82 at Sun Jun 27 20:09:00 2010zym@zym-freedom:~$ atrm 82zym@zym-freedom:~$ 还是老问题:$PATH路径里是有了,用普通用户执行也可以,但是用sudo执行就找不到。真头大,麻烦您了!
_________________您好,请多关照!
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found发表于 :
23:17帖子: 61
送出感谢: 0 次
接收感谢: 0 次
sudo $PATH 显示的应该还是当前用户的$PATH,而不是root的$PATH实验如下:修改当前用户的$PATH为了证明 sudo $PATH,显示的还是当前用户的$PATH登入root显示root的$PATH,证明猜想代码:$ echo &$PATH&/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games$ PATH=$PATH:/home/wry$ echo &$PATH&/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/wry$ sudo echo &$PATH&[sudo] password for wry: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/wry$ sudo -i# echo &$PATH&/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games#
_________________伊吹风子的邻居常说:那孩子是个普通的地球人
0:05,总共编辑了 1 次
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found发表于 :
23:17帖子: 61
送出感谢: 0 次
接收感谢: 0 次
成功了,不知道合不合适我的系统是ubuntu10.04代码:sudo gedit /etc/environment原来是代码:PATH=&/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games&加入自己的代码:PATH=&/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/wry/workspace/shell/LAB&注销账户再登陆(不用重启)代码:$ echo &$PATH&/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/wry/workspace/shell/LAB$ sudo -i[sudo] password for wry: # echo &$PATH&/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/wry/workspace/shell/LAB#
_________________伊吹风子的邻居常说:那孩子是个普通的地球人
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found发表于 :
15:22帖子: 344
谢谢楼上,我su到root帐号,发现$PATH里的确没有我加的,我又在/etc/environment里加了,然后注销重新登录,再su到root里,路径里有我加的了,但是,用sudo运行脚本还是找不到
这是重新登陆后的情况代码:zym@zym-freedom:~$ $PATHbash: /home/zym/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zym/bin:/home/zym/bin: 没有那个文件或目录zym@zym-freedom:~$ su密码: root@zym-freedom:/home/zym# $PATHbash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zym/bin: 没有那个文件或目录root@zym-freedom:/home/zym# su zymzym@zym-freedom:~$ sudo autosleep.sh &now + 10minutes&[sudo] password for zym: sudo: autosleep.sh: command not foundzym@zym-freedom:~$ autosleep.sh &now + 10minutes&warning: commands will be executed using /bin/shjob 84 at Mon Jun 28 12:30:00 2010zym@zym-freedom:~$ atrm 84zym@zym-freedom:~$ zym@zym-freedom:~$ su密码: root@zym-freedom:/home/zym# autosleep.sh &now + 10minutes&warning: commands will be executed using /bin/shjob 85 at Mon Jun 28 12:36:00 2010root@zym-freedom:/home/zym# atrm 85现在的情况是,无论是用普通账户还是root账户,直接运行autosleep.sh都可以,但是在普通账户下用sudo autosleep.sh运行就找不到命令。PS:我的也是Ubuntu10.04
_________________您好,请多关照!
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found发表于 :
8:30帖子: 1453
ym@zym-freedom:~$ $PATHbash: /home/zym/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zym/bin:/home/zym/bin: 没有那个文件或目录头一回见人把 $PATH 当个命令来执行的。
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found发表于 :
15:22帖子: 344
我说怎么老是“没有那个文件或目录”呢,我还以为是路径里面有无效的呢。
_________________您好,请多关照!
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found发表于 :
23:17帖子: 61
送出感谢: 0 次
接收感谢: 0 次
推荐方案1:用sudo options SECURE_PATH可以override内置secure_path设置,在/etc/sudoers文件内增加这么一行:具体:代码:#gedit /etc/sudoers在文件末尾加上这么一行,引号中为我们自定义的PATHDefaults secure_path=”/bin:/usr/bin:/usr/local/bin:…”立即生效,不需要注销推荐方案2:如果有时间的话还是重新编译sudo吧,千万别再带- -with-secure-path选项了其它方案:(存在问题所以不推荐)从这里看到的方法 当我们将/etc/environment中的内容改为PATH=&/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/wry/bin&后注销再登陆普通用户和root的$PATH都正常代码:$env | grep PATHPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/wry/bin代码:#env | grep PATHPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/wry/bin首先让我们看看此时sudo的$PATH代码:$sudo env | grep PATHPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin这个是secure-path,是编译在sudo这个文件里的,至少我没能力改它于是偷天换日,在/tmp建一个叫“sudo”的文件内容为代码:#!/bin/bash/usr/bin/sudo.orig env PATH=$PATH &$@&保存 然后代码:$ sudo -i# mv /usr/bin/sudo /usr/bin/sudo.orig# mv /tmp/sudo /usr/bin# ls -l /usr/bin/sudo-rw-r--r-- 1 wry root 52
23:23 /usr/bin/sudo# chmod a+x /usr/bin/sudo# ls -l /usr/bin/sudo-rwxr-xr-x 1 wry root 52
23:23 /usr/bin/sudo这时sudo时的$PATH为代码:$sudo env | grep PATH代码:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/wry/bin是/etc/environment中的$PATH了炫耀一下,9.sh位于/home/wry/bin代码:$ sudo 9.sh nowwarning: commands will be executed using /bin/shjob 12 at Mon Jun 28 23:28:00 2010$
_________________伊吹风子的邻居常说:那孩子是个普通的地球人
22:34,总共编辑了 4 次
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found发表于 :
16:31帖子: 2794
送出感谢: 0 次
sudo没用root的path...
_________________
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found发表于 :
15:22帖子: 344
11楼太强了,按照您的方法,终于可以用sudo运行我的脚本文件了,代码:root@zym-freedom:~# sudo autosleep.sh &now + 10minutes&warning: commands will be executed using /bin/shjob 89 at Tue Jun 29 09:05:00 2010root@zym-freedom:~# sudo atq89& &Tue Jun 29 09:05:00 2010 a rootroot@zym-freedom:~# sudo atrm 89感谢啊!
_________________您好,请多关照!
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found(已解决,答案在11楼)发表于 :
23:17帖子: 61
送出感谢: 0 次
接收感谢: 0 次
其实不是一点问题都没有,由于那个 env PATH=$PATH 的原因,跟在自定义sudo后的参数都被当成文件了替换完后会出现这种问题代码:$ sudo -i[sudo] password for wry: env: -i: 没有那个文件或目录当然直接执行代码:$ sudo.orig -i# 即可当然也可以再去完善一下自定义的sudo脚本但是为什么会这样,不明白
_________________伊吹风子的邻居常说:那孩子是个普通的地球人
&文章标题 : Re: 求助:sudo执行自己写的shell脚本提示command not found(已解决,答案在11楼)发表于 :
15:22帖子: 344
我也发现一个问题,替换了原来的sudo后在桌面里所有需要输用户密码才能打开的程序(像新立得,还有下载的deb安装)都会出现打不开的情况,具体就是在面板上会出现一个图标,几秒钟后消失,程序也没有出现,替换回原来的sudo后再打开,就又出现要求输密码的对话框了。我想了一个办法,问题算是解决了。办法是在/home/zym/bin/目录下再写一个脚本文件sleep.sh,如下代码:#!/bin/shsudo /home/zym/bin/autosleep.sh &$1&让这个脚本用完整路径去调用真正干活的autosleep.sh,这里$1要加引号,不然参数可能不对。这是我的测试结果代码:zym@zym-freedom:~$ sleep.sh &now + 10minutes&warning: commands will be executed using /bin/shjob 92 at Wed Jun 30 09:33:00 2010zym@zym-freedom:~$ sudo atq92& &Wed Jun 30 09:33:00 2010 a rootzym@zym-freedom:~$ sudo atrm 92可以看到在脚本文件以外的其它目录里运行成功了,没有出现找不到命令了。其实折腾了半天,就是想少输“/home/zym/bin/“这几个字母(因为每天都要用),谢谢erol了!
_________________您好,请多关照!
显示帖子 : 全部帖子1天7天2周1个月3个月6个月1年&排序 作者发表时间文章标题 升序降序&
&[ 15 篇帖子 ]&
正在浏览此版面的用户:没有注册用户 和 1 位游客
您 不能 在这个版面发表主题您 不能 在这个版面回复主题您 不能 在这个版面编辑帖子您 不能 在这个版面删除帖子您 不能 在这个版面提交附件
选择一个版面
------------------
公告/注意事项
& &新闻和通知
& &校园社团支持
& && &华东校区
& && &华南校区
& && &华北校区
& && &华中校区
& && &东北校区
& && &西北校区
& && &港澳台校区
& && &国外校区
& &软件推荐
& &非常任务
系统安装区
& &教学和常见问答
& && &课堂教学和培训
& &初学者园地 - 17.10 Artful Aardvark
& &系统安装和升级
& && &新立得和软件源
& && &Wubi安装讨论
& &启动和引导
& &网卡问题以及网络和拨号
& && &校园网拨号
& &笔记本、UMPC支持
& &手机和平板
& && &Ubuntu移动应用开发
& &常用硬件支持
& &系统架构支持
配置美化区
& &字体美化和中文支持
& && &个人配置文件存放点
& &桌面特效
& &窗口管理器
& &屏幕抓图
& &办公、图像、机械电子设计等
& && &Vim和Emacs
& &因特网相关软件
& &影音多媒体
& &Wine及其分支
& &游戏和游戏模拟器
& &虚拟机和虚拟化
& &其它类软件
& &开源模板库
服务器管理
& &服务器基础应用
& &数据库管理
& &服务器维护和硬件相关
& &Ubuntu VPS
参与Ubuntu开发
& &软件和文档翻译
& &编译或打包
& &Ubuntu错误报告
程序设计区
& &Shell脚本
& &GTK+和QT
& &软件/网站开发
& && &Python/Php/Perl
& && &C/C++/Java
& &内核及嵌入式开发
& &开源小工具
& &Ubuntu 18.04 LTS
& &Ubuntu 16.04 LTS
& &Ubuntu 14.04 LTS
& &Ubuntu 12.04 LTS
& &Ubuntu 10.04 LTS
& &老旧版本支持
衍生发行版
& &Ubuntu GNOME
& &Kubuntu
& &Xubuntu & Lubuntu
& &Ubuntu中文衍生版
& && &UbuntuKylin
& &Ubuntu国外衍生版
& && &Mint
& &Ubuntu衍生版制作
& &其它类Unix OS发行版
& && &Arch发行版
& && &Debian发行版
& && &OpenSUSE发行版
& && &Deepin
& &深度PK版
& &Ubuntu故事和感慨
& &Full Circle开源杂志
分享交流区
& &同城交流
& &线下活动专版
& &Ubuntu宣传推广
& &论坛管理
& && && &Ubuntu中文网上商店Linux 出现command not found 错误解决_Linux教程_Linux公社-Linux系统门户网站
你好,游客
Linux 出现command not found 错误解决
来源:Linux公社&
作者:Linux
在很多人学习Linux命令行,会经常遇到command not found 错误,出现上述错误主要有以下几种情况:
命令书写错误,如有些人将Windows命令与Linux命令搞错,如查看ip相关信息,Linux命令行应该为ifconfig
环境变量没有配置好,这里一般有两种解决方法,第一,可以切换到root用户执行命令,第二种,就是配置用户的环境变量,其指令如下:
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
----------------------------分割线----------------------------
Linux命令找不到?(找不到命令)
这个问题其实很简单,如果你在终端输入一个命令,而系统提示你说命令没有找到(Command not found)的话,要么是因为你没有装相应的软件包,要么就是因为路径设置的问题。如果是因为软件包的问题,那没有别的好说的,安装相应的软件包就好了。而另外一种情况,则需要对用户的路径进行设置。这里针对普通用户和超级用户分开介绍,以些列为例。& & & 一、普通用乎如果一些程序没有安装在系统默认的路径(ie /bin/, /usr/bin, /usr/local/bin/ )里面,这个时候普通用户想要调用这些命令,必须设定路径。方法很简单:以普通用户登录,然后在终端输入:
vi ~/.bash_profile
会出现如下的内容:# .bash_profile
# Get the aliases and functionsif [ -f ~/.bashrc ]; then& & & & . ~/.bashrcfi
# User specific environment and startup programs
export PATH此时,只要在export PATH前面加入自己的路径即可,例如我的修改后如下:[www.linuxidc.com @localhost bin]$ cat ~/.bash_profile# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then& & & & . ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:/usr/local/programs/crosstool/gcc-4.0.2-glibc-2.3.6/arm-linux-gnu/bin/export PATH
二、超级用户这里主要是一些用在系统管理上的命令,例如ifconfig, route等等, 他们位于/sbin, 或/usr/sbin/下。其实这些命令本身就没有任何问题,软件包早已安装完毕,路径设置也没有丝毫问题。而出现Command not found的原因在于:在终端使用su变成超级用户的时候没有将root的路径(环境)一起切换过来,从而导致身份虽然已经是root,但是工作的环境和路径依旧是普通用户的。这种问题的解决方法有两个,其一是按照(一)里面提到的,对普通用户的工作路径进行修改,但是这样比较麻烦。其二则简单的多,只要在使用su的时候在其后家上一个空格和&-& ,即将su改为 su -& 。这样就可以在成为root的同时将root的工作路径也一起切换过来了。如果你已经使用su变成了root,那也没有关系,只要在输入一下su - 就好了。
相关资讯 & & &
& (08/17/:43)
& (08/14/:42)
& (05/18/:49)
& (06/07/:48)
& (07/04/:32)
& (03/25/:16)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 sudo su root 的文章

 

随机推荐