【问题标题】:the apm(the package manager of atom) start shell run errorapm(atom的包管理器)启动shell运行错误
【发布时间】:2016-06-06 11:20:44
【问题描述】:

我正在处理我的 osx 10.11 系统中的 apm 错误。当我跑步时

apm

在我的命令行中,由于错误的文件路径而引发错误:

/usr/local/bin/apm: line 32: /Applications/Atom.app/Contents/Resources/app/apm/node_modules/.bin/node: No such file or directory

退房后,我发现: 在apm shell(/Atom.app/Contents/Resources/app/apm/node_modules/.bin/apm)中有一个while循环:

while [ -L "$binDir" ]
do
  binDir=`readlink "$binDir"`
  builtin cd "`dirname "$binDir"`"
  binDir=`basename "$binDir"`
done

似乎这个循环在我的 osx 系统上只运行一次,在其他系统上运行两次,我的错误就是因为这个。

【问题讨论】:

    标签: node.js bash shell electron atom-editor


    【解决方案1】:

    -L 检查文件是否为符号链接,如果是则返回 True。来自man test

       -L FILE
              FILE exists and is a symbolic link (same as -h)
    

    查看一个示例,其中我们创建了一个文件 hello 和一个名为 my_link 的(软)链接:

    $ touch hello
    $ ln -s hello my_link
    $ [ -L "hello" ] && echo "this is a link" || echo "this is NOT a link"
    this is NOT a link
    $ [ -L "my_link" ] && echo "this is a link" || echo "this is NOT a link"
    this is a link
    

    【讨论】:

    • 是的,我明白 shell 中的“-L”是什么意思,但是你能看到我的代码吗?我不明白为什么这个循环在我的 osx 中只运行一次。它在另一个 mac osx 上运行两次。系统是一样的。
    • @zhuyingda while 不断循环查找链接的原始文件。目前尚不清楚到底发生了什么,但请尝试echo $binDir 看看它卡在哪里。 /Applications/Atom.app/Contents/Resources/app/apm/node_modules/.bin/node 好像坏了,所以你可能有 nodejs 配置问题。
    • 当这个while循环的第一个循环跑完的时候,$binDir的值还是“apm”,不知道为什么第二次循环不运行?第三次?
    • @zhuyingda 如果你手动运行呢? readlink "apm" 在它所在的目录中。另外,执行ls -l apm 并查看第一个字符。是l吗? (=L,用于链接)
    • 是的,正如你所说,目录中的 readlink "apm" 存在符号链接 "apm" ,不会匹配 $PATH(/usr/local/bin/ apm) 但当前目录中的 apm。我明白了,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2017-03-15
    • 2013-01-21
    • 2014-12-21
    • 1970-01-01
    • 2021-10-23
    • 2013-10-20
    • 2016-09-23
    • 2017-05-29
    相关资源
    最近更新 更多