相关疑难解决方法(0)

为什么sudo会改变PATH?

这是PATH没有sudo 的变量:

$ echo 'echo $PATH' | sh 
/opt/local/ruby/bin:/usr/bin:/bin
Run Code Online (Sandbox Code Playgroud)

这是PATHsudo 的变量:

$ 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执行的程序.

sudo path environment-variables

279
推荐指数
7
解决办法
13万
查看次数

使用sudo时找不到命令

foo.sh在我的主文件夹中调用了一个脚本.

当我导航到这个文件夹,然后输入时./foo.sh,我得到了

-bash: ./foo.sh: Permission denied.

当我使用时sudo ./foo.sh,我明白了

sudo: foo.sh: command not found.

为什么会发生这种情况以及如何解决?

linux bash sudo

127
推荐指数
5
解决办法
14万
查看次数

使用$ sudo bundle exec ...引发'bundle:command not found'错误

我在Ubuntu服务器上安装了rbenv.我可以进入我的应用程序目录并运行$ bundle没有问题,但是我需要运行$ sudo bundle exec ...,这会给我一个错误:

bundle:找不到命令

为什么这样,我该如何解决?

ruby sudo ruby-on-rails bundler rbenv

3
推荐指数
1
解决办法
8105
查看次数

标签 统计

sudo ×3

bash ×1

bundler ×1

environment-variables ×1

linux ×1

path ×1

rbenv ×1

ruby ×1

ruby-on-rails ×1