$PATH 在 Mac 上的终端中究竟如何工作以及 .zshrc 文件究竟如何影响它?
How exactly does $PATH work in Terminal on Macs and how exactly does .zshrc file influence it?
我是 Mac 的编程新手,我很难理解终端如何与 $PATH
和 .zshrc 文件相关的工作。
先说明一下:我正在使用 Macbook Pro 14 运行 连接 M1 Pro,并且正在尝试编程。
我一直在经历 Flutter 安装和设置过程,在某些时候,我正在学习的教程告诉我通过将路径添加到我的 .zshrc 文件来声明我的 Flutter SDK 的路径。我也是这样做的:
export PATH=$HOME/dev/tooling/flutter/bin:$PATH
我保存了文件并重新启动了终端并尝试调用 flutter doctor
并且它有效 - 太棒了,我的手臂在空中快乐地挥舞着。注释掉添加的路径意味着当我在 .../flutter/bin
目录之外工作时,我不能再通过键入 flutter
在终端中调用它 - 对我来说很有意义。
在教程后面的某个地方,我被指示安装 Java,所以我安装了。我在 ARM 架构上为 Macs 运行ning 安装了 Azul 的 Zulu Java,然后我再次被告知要在我的 .zshrc 文件中声明 Java 的路径:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-18.jdk/Contents/Home
我这样做我调用 java
并尝试调用 java -version
,它们都有效。
现在,问题从下一步开始
在下一步中,我被告知安装 Android Studio,我照做了。然后我返回到终端和 运行 flutter doctor
,它突出显示 Android 工具链是一个问题,并扩展为 cmdline-tools component is missing
。我进行了搜索,找到了关于在 Android Studio > System Settings > [=80 中勾选 Android SDK Command-line Tools 的建议解决方案=] SDK > SDK Tools,然后声明两个名为 tools 和 platform-tools 的文件夹。
我按照指示做了,但最终,我最终用错误的语法声明了它,最重要的是,我意识到当我勾选 [ 时我没有点击 apply =80=] Android Studio 中的 SDK 命令行工具。那么我的 .zshrc 文件看起来像这样:
export PATH=$HOME/dev/tooling/flutter/bin:$PATH
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-18.jdk/Contents/Home
export PATH=$HOME/Library/Android/sdk/tools
export PATH=$HOME/Library/Android/sdk/platform-tools
在我保存 .zshrc 文件并重新启动终端后,none 的命令立即被识别。不是 flutter
也不是 flutter doctor
也不是 java
或 java -version
;甚至 vim ~/.zshrc
。
我挠了挠头,重新打开.zshrc文件,注释掉最后两行新添加的内容,重启终端,瞧,又好了。
为了增加混乱,然后我将我的 .zshrc 文件编辑为如下所示(第二行代码是故意用我现在知道的不正确语法编写的,以查看它会产生什么影响):
export PATH=$HOME/dev/tooling/flutter/bin:$PATH
export PATH=$HOME$PATH:$HOME/Library/Android/sdk/tools
#export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-18.jdk/Contents/Home
#export PATH=$HOME/Library/Android/sdk/tools
#export PATH=$HOME/Library/Android/sdk/platform-tools
并调用 flutter
和 flutter doctor
不起作用;但是调用 java
和 java -version
确实如此(这让我相信我的行声明 java 的路径是毫无意义的)。但是当我重新编辑我的 .zshrc 文件时,它看起来像这样:
export PATH=$HOME/dev/tooling/flutter/bin:$PATH
#export PATH=$HOME$PATH:$HOME/Library/Android/sdk/tools
#export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-18.jdk/Contents/Home
export PATH=$HOME/Library/Android/sdk/tools
export PATH=$HOME/Library/Android/sdk/platform-tools
none 的命令有效 - 不是 flutter
也不是 flutter doctor
或 java
等
这是怎么回事?我很困惑。我猜这与 $PATH
在活动代码行中的位置有关,但我不太明白。
这是一个很长的读物,可能是一个非常愚蠢的问题,但如果我无法深入了解它,它会吞噬我,哈哈。提前致谢!
当你做一个
export PATH=$HOME/Library/Android/sdk/tools
你破坏了旧的设置(即 $HOME/dev/tooling/flutter/bin:$PATH)。我会改写
path+=(~/Library/Android/sdk/tools)
这会将新目录附加到现有 PATH。
我是 Mac 的编程新手,我很难理解终端如何与 $PATH
和 .zshrc 文件相关的工作。
先说明一下:我正在使用 Macbook Pro 14 运行 连接 M1 Pro,并且正在尝试编程。 我一直在经历 Flutter 安装和设置过程,在某些时候,我正在学习的教程告诉我通过将路径添加到我的 .zshrc 文件来声明我的 Flutter SDK 的路径。我也是这样做的:
export PATH=$HOME/dev/tooling/flutter/bin:$PATH
我保存了文件并重新启动了终端并尝试调用 flutter doctor
并且它有效 - 太棒了,我的手臂在空中快乐地挥舞着。注释掉添加的路径意味着当我在 .../flutter/bin
目录之外工作时,我不能再通过键入 flutter
在终端中调用它 - 对我来说很有意义。
在教程后面的某个地方,我被指示安装 Java,所以我安装了。我在 ARM 架构上为 Macs 运行ning 安装了 Azul 的 Zulu Java,然后我再次被告知要在我的 .zshrc 文件中声明 Java 的路径:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-18.jdk/Contents/Home
我这样做我调用 java
并尝试调用 java -version
,它们都有效。
现在,问题从下一步开始
在下一步中,我被告知安装 Android Studio,我照做了。然后我返回到终端和 运行 flutter doctor
,它突出显示 Android 工具链是一个问题,并扩展为 cmdline-tools component is missing
。我进行了搜索,找到了关于在 Android Studio > System Settings > [=80 中勾选 Android SDK Command-line Tools 的建议解决方案=] SDK > SDK Tools,然后声明两个名为 tools 和 platform-tools 的文件夹。
我按照指示做了,但最终,我最终用错误的语法声明了它,最重要的是,我意识到当我勾选 [ 时我没有点击 apply =80=] Android Studio 中的 SDK 命令行工具。那么我的 .zshrc 文件看起来像这样:
export PATH=$HOME/dev/tooling/flutter/bin:$PATH
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-18.jdk/Contents/Home
export PATH=$HOME/Library/Android/sdk/tools
export PATH=$HOME/Library/Android/sdk/platform-tools
在我保存 .zshrc 文件并重新启动终端后,none 的命令立即被识别。不是 flutter
也不是 flutter doctor
也不是 java
或 java -version
;甚至 vim ~/.zshrc
。
我挠了挠头,重新打开.zshrc文件,注释掉最后两行新添加的内容,重启终端,瞧,又好了。
为了增加混乱,然后我将我的 .zshrc 文件编辑为如下所示(第二行代码是故意用我现在知道的不正确语法编写的,以查看它会产生什么影响):
export PATH=$HOME/dev/tooling/flutter/bin:$PATH
export PATH=$HOME$PATH:$HOME/Library/Android/sdk/tools
#export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-18.jdk/Contents/Home
#export PATH=$HOME/Library/Android/sdk/tools
#export PATH=$HOME/Library/Android/sdk/platform-tools
并调用 flutter
和 flutter doctor
不起作用;但是调用 java
和 java -version
确实如此(这让我相信我的行声明 java 的路径是毫无意义的)。但是当我重新编辑我的 .zshrc 文件时,它看起来像这样:
export PATH=$HOME/dev/tooling/flutter/bin:$PATH
#export PATH=$HOME$PATH:$HOME/Library/Android/sdk/tools
#export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-18.jdk/Contents/Home
export PATH=$HOME/Library/Android/sdk/tools
export PATH=$HOME/Library/Android/sdk/platform-tools
none 的命令有效 - 不是 flutter
也不是 flutter doctor
或 java
等
这是怎么回事?我很困惑。我猜这与 $PATH
在活动代码行中的位置有关,但我不太明白。
这是一个很长的读物,可能是一个非常愚蠢的问题,但如果我无法深入了解它,它会吞噬我,哈哈。提前致谢!
当你做一个
export PATH=$HOME/Library/Android/sdk/tools
你破坏了旧的设置(即 $HOME/dev/tooling/flutter/bin:$PATH)。我会改写
path+=(~/Library/Android/sdk/tools)
这会将新目录附加到现有 PATH。