【问题标题】:Add directory to system path in OS X Lion在 OS X Lion 中将目录添加到系统路径
【发布时间】:2012-07-09 14:03:35
【问题描述】:

我不知道如何将目录添加到系统路径。我发现命令是这样的:

export PATH=$PATH:/my_path/to/my_dir

示例

我在我的安装目录所在的路径下运行终端。在这种情况下,我说的是 Play Framework。然后我输入:

export PATH=$PATH:/to/play20

看起来什么都没有发生。事实上,当我输入命令“play”(执行框架)时,我得到:

-bash: play: command not found

有人可以给我一份体面的分步指南吗?

【问题讨论】:

  • 程序是在/to/play20还是/to/play20/bin?它是 Mac OS X 应用程序(.app 目录)吗?
  • 可执行文件在 play20 中,它不是 OS X 应用程序。这是我关注的指南playframework.org/documentation/2.0.2/Installing
  • 你之前有没有这个命令:chmod +x /path/to/play20/play?
  • 是的。但是我使用的命令是正确的吗?

标签: shell path playframework osx-lion playframework-2.0


【解决方案1】:

执行命令“/to/play20/play help”。如果这给出了预期的输出(播放命令的帮助),那么可执行文件是可用的,并且问题出在 shell 路径中。如果它没有给出预期的输出,则可执行文件不工作。

在前一种情况下,请确保您正在运行 bash shell。 (这是 Mac OS X 最新版本的默认设置,但可能会针对特定帐户进行更改。)要临时执行此操作,请执行命令“bash”。 (当你想退出临时shell时,执行命令“exit”。)然后再次执行export命令。 (当export命令生效时,它改变了变量而不显示任何输出,所以这是正常的。)仔细检查export命令中的拼写。

在后一种情况下,执行“ls -ld /to/play20/play”。如果您收到文件不存在的消息,则可执行文件未正确安装,我无法进一步帮助您。如果该文件存在,那么由于某种原因它是不可执行的。这可能是因为您没有访问它的权限(尤其是执行它的权限,在 ls 输出的初始字段的某些位置用“x”标记,可能包含连字符、“r”、“w”和其他几个字母)或它是一个不存在的文件的符号链接(由文件的 ls 输出的第一个字符中的“l”表示)。假设您具有更改系统权限的适当权限,则可以通过 chmod 命令修复缺少权限。如果文件是指向另一个文件的符号链接,则可能是安装错误,或者目标文件可能存在权限问题(或者是另一个符号链接,等等)。

【讨论】:

  • 如果我输入这个 ./play20/play 帮助它就可以了。所以我在 shell 中输入“bash”。我添加播放权限,然后输入“export PATH=$PATH:/play20”。最后我在终端输入“play”,得到“command not found”。 Uff..这真的很烦人。我做了你所说的一切:文件存在并且有权限。我认为我对路径的事情做错了。
  • ./play20/play/play20/play 之间存在巨大差异(除非当前目录是根目录,/)。第一个表示当前目录的相对路径名;要将其添加到 $PATH,请执行 export PATH=$PATH:$PWD/play20。正如您所证明的,第二个不起作用。看起来您还没有安装该软件;它刚刚编译完成,您仍在构建区域中工作。
  • 嗯,它没有安装软件。您只需下载一个包含可执行文件的目录即可。我只想将此 exe 添加到我的工作路径中。如您所说,它使用“export PATH=$PATH:$PWD/play20”工作。但是每次我关闭外壳时,我都需要重新输入导出命令才能获得“播放”命令。我怎样才能让它永久化?
  • @JohnEntropy:为什么你会在你的问题中询问“/to/play20”,但实际上在尝试中使用“./play20”?显然它们是不同的。您必须准确描述和报告确切的事件,然后才能获得帮助。
  • @JohnEntropy: PATH 变量在 shell 启动时设置。 export 命令只在当前的 shell 实例中改变它;它不会更改 PATH 在 shell 启动时设置的值。以持久方式设置 PATH 值的常用方法是将导出命令放在文件 ~/.bash_profile 中。 (“~”代表你的主目录。)当 bash 作为登录 shell 启动时,如果 ~/.bash_profile 存在并且是可执行的,则 bash 执行其中的命令。 (这是针对单个用户的。系统范围的效果还有其他方法。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 2011-08-09
  • 2011-03-24
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
相关资源
最近更新 更多