这是PATH
没有sudo 的变量:
$ echo 'echo $PATH' | sh
/opt/local/ruby/bin:/usr/bin:/bin
Run Code Online (Sandbox Code Playgroud)
这是PATH
sudo 的变量:
$ echo 'echo $PATH' | sudo sh
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Run Code Online (Sandbox Code Playgroud)
据我所知,sudo
应该PATH
保持不变.这是怎么回事?我该如何改变?(这是在Ubuntu 8.04上).
更新:据我所知,没有任何脚本PATH
以任何方式作为root更改.
来自man sudo
:
为了防止命令欺骗,当在用户的PATH中搜索命令时(如果一个或两个都在PATH中),sudo会检查``.''和``''(都表示当前目录).但请注意,实际的PATH环境变量未被修改,并且不会更改地传递给sudo执行的程序.
我foo.sh
在我的主文件夹中调用了一个脚本.
当我导航到这个文件夹,然后输入时./foo.sh
,我得到了
-bash: ./foo.sh: Permission denied
.
当我使用时sudo ./foo.sh
,我明白了
sudo: foo.sh: command not found
.
为什么会发生这种情况以及如何解决?
我在Ubuntu服务器上安装了rbenv.我可以进入我的应用程序目录并运行$ bundle
没有问题,但是我需要运行$ sudo bundle exec ...
,这会给我一个错误:
bundle:找不到命令
为什么这样,我该如何解决?