由sudo 为何提示找不到命令说起

时间:2022-09-04 02:38:45

转自 http://hi.baidu.com/liweisheng1234/item/d7de51616bc4f308a1cf0fe4


解决办法


1.编辑/etc/sudoers文件,把Defaults  env_reset改成Defaults ! env_reset


2.编辑.bashrc,最后添加alias sudo='sudo env PATH=$PATH'


有些技术真的很麻烦,但却有很长的生命,虽然学习的时候会遇到很多问题,但是在这些上面花时间是值得的。


下面是我装 texlive 2012的时候遇到的一些问题。还有关于linux环境变量的一些设置问题



我还要说有些东西真的很麻烦,但是却有很多人为它着迷。有些软件已经生长为一种系统。这个系统像有生命的生物一样在不断的生长。对于明白他的人,他是那样的善解人意,对于不理解他的人他像一架精巧的难以驾驽的的机器。我所知道的这些系统有, linux,tex,emacs,drupal等等


在linux mint 13上装最新版本的texlive 2012,就不能用 apt-get install,因为太新了还没有加到软件仓库里,只能用官网上面提供的安装包安装了,装完后,可以用 tlmgr -gui对 tex的各种宏包进行管理。


手动添加texlive的各种程序到 PATH 环境变量下,就可以在终端执行 tex xelatex等命令了,当然了程序还让你添加man目录和info目录到  MANPATH和INFOPATH下


只因我将texlive装在了 /usr/local/texlive这个默认的文件夹下,所以进行宏包管理的时候,前面就必须用加上"sudo"才能对那个文件夹进行写操作(当然了和也可以为这个目录添加写权限),但是当运行 sudo tlmgr -gui命令时却提示“找不到此命令”,这时大部分人都会一脸的迷惑,不对呀我已经将

bin/i386-linux这个路径添加到PATH环境变量里了呀。用echo $PATH输出可以看见呀,单独运行 tlmgr命令也是可以的呀。


不知道有多少人遇到这种 加上 sudo 找不命令的情况,怎么办呢,谢天谢天我们有google,百度不知道的google一定知道。


很多人就可以病急乱投医了,一会在 /etc/profile修改修改,一会在/etc/environment修改,~/.bashrc 修改了好多地方还是不行。网上也有些人是瞎指挥,帮倒忙。出现这种情况就是因为对linux了解不深的原因。不过网上总是有热心的高人的。


其实出现这种情况的原因,主要是因为当 sudo以管理权限执行命令的时候,linux将PATH环境变量进行了重置,当然这主要是因为系统安全的考虑,以防用户执行可引起灾难性的程序。


这个配置信息存储在了/etc/sudoers这个文件是,当指行sudo命令的时候系统寻找的是 secure_path下的目录,所有在 /etc/profile ~/.bashrc下对PATH做的配置都会被忽略。所以就出现加上 sudo xxx 找不到命令的情况,解决办法用很多种了,可以将要执行sudo的命令软链接到 secure_path的目录下,或者修改 secure_path变量。