如何确保Mongo二进制文件在我的Shell的rc(~/.bashrc)路径中 - 在Mac上

19

我正在学习MongoDB。
我已经完成了以下步骤:我理解了这个。

mkdir -p mongodb
cp -R -n mongodb-osx-x86_64-2.6.7/ mongodb

对我来说,接下来的这些指令并不十分清晰。

确保二进制文件的位置在PATH变量中。MongoDB的二进制文件位于压缩包的bin/目录中。为确保这些二进制文件在您的PATH中,您可以修改您的PATH变量。

例如,您可以将以下行添加到您的shell的rc文件(例如~/.bashrc)中:

export PATH=<mongodb-install-directory>/bin:$PATH

用MongoDB解压后的路径替换 <path to the extracted MongoDB archive>。

指令结束。

从我的Mac终端开始

$which bash
/bin/bash

bin目录下有一些命令:bash,chmod,ln,pid,mkdir。

我找不到应该包含上述PATH代码的目录。

谢谢。

Abhay的指示有效了!抱歉以下内容比较长,但我认为这是必要的,因为您上次讲得非常清楚,我希望您能看到我的文件结构。
如果电子邮件更容易,请告诉我,但这很可能会帮助其他人 :) 我真的想了解我的文件结构,所以如果您不介意进一步澄清一下,就请帮忙解答。 再次感谢您的专业知识。

1. 但是为什么所有二进制文件(可执行文件)都列在这个bin文件夹中呢?它们是这个文件夹中'唯一'的文件吗? 也许当我安装bower grunt等时,我应该将它们(bower grunt等)安装到其他位置。 我试图使我的文件结构逻辑和清晰。 以下是我的文件结构。

MacBookPro:usr regina$ cd ..
MacBookPro:/ regina$ ls
Applications        bin         net
CoreSyncInstall.log cores           private
Library         data            sbin
Network         dev         tmp
System          etc         usr
Users           home            var
Volumes         mach_kernel
MacBookPro:/ regina$ cd usr/local/bin
MacBookPro:bin regina$ ls
bower       grunt       mongod      mongorestore    npm
browserify  gulp        mongodump   mongos      statsd
bsondump    http-server mongoexport mongosniff  yo
cake        karma       mongofiles  mongostat
coffee      lessc       mongoimport mongotop
cordova     mkdirp      mongooplog  node
express     mongo       mongoperf   nodemon
MacBookPro:bin regina$ 

2. 另外,我想查看我的 .bashrc 文件,但我没有这个文件。我使用的是 OSX 10.8.5 系统,我想要查看我的 $PATH 变量。几个月前,我好像在某个地方找到过它。当时我使用 nano 打开了一些文件,因为我很好奇。它是否被列为环境变量?

MacBookPro:/ regina$ ls
Applications        bin         net
CoreSyncInstall.log cores           private
Library         data            sbin
Network         dev         tmp
System          etc         usr
Users           home            var
Volumes         mach_kernel
MacBookPro:/ regina$ cd home
MacBookPro:home regina$ ls -la
total 2
dr-xr-xr-x   2 root  wheel     1 Feb  3 08:29 .
drwxr-xr-x  33 root  wheel  1190 Jan 25 17:21 ..
MacBookPro:home regina$ 
  1. 我这样启动mongo shell。我没有显示终端输出的所有行。 看看我的文件结构。我最初遵循一个cp命令,但它没有解释在哪里复制存档(桌面)mongodb-osx-x84...文件夹,所以看看我把它复制到哪里。现在我有这些文件在两个位置 - 是吗? 我还有一个mongodb文件夹在更高级别的mongodb文件夹中。 为什么?我是如何管理这个文件夹结构的?它似乎不合逻辑。我已经缩进了4个空格,但以下内容不会格式化,所以我只添加了换行符。抱歉。

    MacBookPro:home regina$ cd ..

    MacBookPro:/ regina$ ls Applications bin net CoreSyncInstall.log cores private Library data sbin Network dev tmp System etc usr Users home var Volumes mach_kernel

    MacBookPro:/ regina$ cd data

    MacBookPro:data regina$ ls

    db mongodb

    MacBookPro:data regina$ cd mongodb

    MacBookPro:mongodb regina$ ls

    mongodb MacBookPro:mongodb regina$ cd mongodb MacBookPro:mongodb regina$ ls GNU-AGPL-3.0 THIRD-PARTY-NOTICES README bin

    MacBookPro:mongodb regina$ cd bin

    MacBookPro:bin regina$ ls

    bsondump mongodump mongoimport mongorestore mongostat mongo mongoexport mongooplog mongos mongotop mongod mongofiles mongoperf mongosniff

  2. 这是当我尝试输入'mongo'时发生的情况,如其他论坛建议的那样。

    MacBookPro:bin regina$ mongo MongoDB shell version: 2.6.7 connecting to: test 2015-02-03T08:36:54.157-0500 warning: Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused

所以我输入了下面这个仍然失败了。

MacBookPro:bin regina$ ./mongo
MongoDB shell version: 2.6.7
connecting to: test
2015-02-03T08:37:03.599-0500 warning: Failed to connect to    127.0.0.1:27017, reason: errno:61 Connection refused

然后我尝试了这个命令,它连接了端口27017并处于监听状态。为什么我需要使用守护进程命令?

MacBookPro:bin regina$ ./mongod
./mongod --help for help and startup options
2015-02-03T08:37:08.712-0500 [initandlisten] MongoDB starting :    pid=487 port=27017 dbpath=/data/db 64-bit host=macbookpro.home
more lines of code
2015-02-03T08:37:09.018-0500 [initandlisten] waiting for connections on port 27017
1个回答

38
当您在Mac上下载MongoDB时,您会得到一个存档文件。您需要做的第一件事是解压缩存档。要做到这一点,您只需双击存档即可。未压缩的文件夹将具有bin文件夹中的二进制文件,例如 mongodb-osx-x86_64-2.6.7/bin。接下来您需要确保这些二进制文件是可访问的。因此,您可以执行以下两个操作之一:
  1. 将二进制文件复制到/usr/local/bin文件夹中。由于/usr/local/bin始终在PATH中,因此您不必将其添加到PATH中。
    这很简单。运行cp mongodb-osx-x86_64-2.6.7/bin/* /usr/local/bin/。就这样。完成了。
  2. 将二进制文件夹的路径添加到您的$PATH变量中。
    打开位于您的主文件夹中的.bashrc文件,并在末尾加入export PATH=$HOME/mongodb/bin:$PATH行。我假设mongodb未压缩在下载文件夹中。
如果选择第二种方法,请确保不要意外删除添加到PATH中的mongodb文件夹。 完成以上步骤后,请关闭终端,打开新的终端窗口并运行:
mongo --version

如果你能获得带有版本信息的mongodb信息,那么很好。

如果你仍然遇到类似于“命令mongo未找到”的情况,请确保你按照以上说明正确操作。同时确保你没有使用其他shell,比如zsh。如果是这样的话,你需要在相应的shell文件中添加export语句。对于zsh,文件名是.zshrc。


好了!所以你更新了初始问题并提出了一些更多的问题。以下是逐点解释:

  1. 你在/usr/local/bin文件夹中看到的文件都是二进制文件,简单来说就是可执行程序。尽管可以从命令行的任何位置运行它们,但这些可执行二进制文件仍驻留在那里。

  2. .bashrc文件位于用户的主目录中,在Mac上它是/Users/username。在你的情况下,应该是/Users/regina,因为你的名字是Regina。

  3. mongo是客户端应用程序,用于与mongodb数据库交互。mongod是存储数据的数据库守护进程。因此,首先必须运行mongod,然后才能使用客户端mongo连接到它并开始查询。


Abhay。谢谢您。非常清楚,我明白了。我正在编辑我的原始帖子底部,因为如果可能的话,您能回答另外几个问题吗?谢谢。 - shareyourpeace
如果这个答案有帮助,请不要忘记接受它或者点赞 :-) - Abhay PS
是的,我肯定想接受它。在您的回复下面没有“接受”按钮,只有“分享”和“编辑”。它在哪里?如果我的声望达到15分,我只能投赞成票。 - shareyourpeace
你似乎是 Stack Overflow 的新手。请查看此链接 - http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work - Abhay PS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接