【问题标题】:commands work in home directory, but not anywhere else命令在主目录中工作,但不在其他任何地方
【发布时间】:2021-05-02 21:50:23
【问题描述】:

我正在尝试在运行 Bir Sur 11.2.3 的 Mac Mini 上设置开发环境。我可以将命令添加到.zshrc 文件,但它们似乎只在我的主目录中工作。比如……

chris@chriss-mac-mini an_app % which flutter dart
flutter not found
dart not found

chris@chriss-mac-mini an_app % cd ~

chris@chriss-mac-mini ~ % which flutter dart
dev/flutter/bin/flutter
dev/flutter/bin/dart

我的 .zshrc 文件看起来像这样...

chris@chriss-mac-mini ~ % cat .zshrc
export PATH="$PATH:dev/flutter/bin"

为什么我无法在本机其他目录使用flutter命令?

【问题讨论】:

    标签: macos flutter zsh macos-big-sur


    【解决方案1】:

    简短回答:将 .zshrc 中的行更改为:

    export PATH="$PATH:$HOME/dev/flutter/bin"
    

    长答案:您添加到PATH 环境变量dev/flutter/bin 的路径不以“/”开头,因此它是一个相对 路径,这意味着它将被相对解析到您当前工作目录的任何位置。如果您在/Users/cjmcqueen(或任何您的主目录)中,它将解析为/Users/cjmcqueen/dev/flutter/bin,这可能是实际二进制文件所在的位置。但如果你在/random/other/path,它会解析为/random/other/path/dev/flutter/bin,它可能根本不存在(更不用说包含flutterdart 等命令的二进制文件了)。

    要解决此问题,您需要为二进制文件添加完整的绝对路径,而不是相对路径。在某些情况下,~ 将扩展到您的主目录的路径(因此~/dev/flutter/bin 将起作用),但并非在所有情况下。在这种特殊情况下,$HOME 更好,因为 shell 会将其扩展为您的主目录的绝对路径之前将其存储在 PATH 变量中,因此您不必依赖稍后再解决。

    【讨论】:

    • zsh~ 紧跟: 之后会应用文件名扩展,以适应PATH 等的使用(不过,在确切记录这一点的地方比我好。)
    • 这解决了我在 M1 上的问题,在 Home 中工作,但在其他任何地方都没有,但是 android studio 仍然会用颤振构建,但我无法运行命令,谢谢。
    【解决方案2】:

    export PATH="$PATH:dev/flutter/bin" 引用的是相对路径。

    dev/flutter/bin 应该类似于 /Users/<user>/dev/flutter/bin

    在终端中,转到 Flutter bin 文件夹的目录并输入 pwd。这是它应该引用的完整路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多