如果没有Sudo,Meteor将无法运行?

Ras*_*sir 6 permissions bash terminal sudo meteor

在OSX Yosemite和最新版本的meteor(1.0.1)上,无论我卸载并重新安装它多少次,我似乎无法在没有sudo的情况下运行它.我的用户帐户是管理员帐户.但流星拒绝在没有sudo的情况下运行.我得到的错误都是:

-bash: meteor: command not found
Run Code Online (Sandbox Code Playgroud)

我在这里看过几篇有类似问题的帖子.我试过用磁盘工具修复磁盘权限.我试过了:

sudo chown -R $myUsername /usr/local/bin/meteor
Run Code Online (Sandbox Code Playgroud)

我不确定我还能做什么,因为它似乎是一个权限问题.有没有人有什么建议?

可能有用的其他信息:

$ sudo which meteor
/usr/local/bin/meteor
$ sudo ls -l /usr/local/bin/meteor
-rwxrwxrwx 1 root wheel 3528 Dec 18 23:14 /usr/local/bin/meteor
$ ls -ld /usr/local/bin
drwx------ 6 502 wheel 204 Dec 18 23:14 /usr/local/bin
Run Code Online (Sandbox Code Playgroud)

顺便说一句,ls -l /usr/local/bin/meteor只适用于sudo.

Sto*_*ica 11

在我们澄清了meteor可执行文件及其基本目录的权限之后,问题变得非常清楚了:

  • Meteor二进制文件位于 /usr/local/bin/meteor
  • 您的用户没有该目录的权限 /usr/local/bin

要解决的步骤:

  1. 添加基目录的权限: sudo chmod +rx /usr/local/bin
  2. 如有必要,将基目录添加到PATH:PATH=$PATH:/usr/local/bin

备查:

  • 当你遇到这种错误时: -bash: XYZ: command not found
    • 首先要检查的是找到XYZ例如的绝对路径/path/to/XYZ
    • 尝试使用绝对路径运行 /path/to/XYZ
  • 如果与运行/path/to/XYZ提供了-bash: /path/to/XYZ: Permission denied,这意味着你有问题的文件和/或目录的权限:
    • 您需要对文件本身的读取和执行权限: sudo chmod +rx /path/to/XYZ
    • 您需要对导致该文件的所有路径元素的exec权限: sudo chmod +x /path /path/to
  • 修复权限问题后,运行/path/to/XYZ应该工作
  • 修复权限问题后,如果运行XYZ(没有完整路径)仍然不起作用,这意味着/path/to不在你的PATH.修复PATH=$PATH:/path/to

注意:上述sudo chmod命令为所有用户提供权限(读取和执行):owner + group + other.在OP的情况下(在大多数情况下),这是完全正常的.在具有更复杂权限设置的情况下,您可能需要更具体,而g+rx不是使用+rx.

(作为记录)

如果它可以使用sudo,并且没有sudo你得到command not found,那意味着它meteorPATHfor上root而不是你的用户.要使其适合您的用户,您需要找到路径meteor并将其添加到您的用户PATH.例如:

  1. 成为root用户 sudo su -
  2. 找到meteorrun命令的路径:which meteor
  3. 从root(Control-D)注销以返回给您的用户
  4. 添加基目录PATH,例如,如果先前which meteor给你/usr/local/bin/meteor,然后执行以下操作:PATH=$PATH:/usr/local/bin

在此之后,它应该与您的用户一起工作.要使其"永久",请添加最后一步~/.bashrc.

如果这仍然不起作用,那么您的用户可能没有该文件的执行权限.使用此命令修复此问题:

sudo chmod +x /usr/local/bin/meteor
Run Code Online (Sandbox Code Playgroud)

从您的评论中,您的用户似乎也没有对/usr/local/bin目录本身的权限.使用此命令修复此问题:

sudo chmod +rx /usr/local/bin
Run Code Online (Sandbox Code Playgroud)