【问题标题】:.bash_profile: bad assignment [duplicate].bash_profile:错误的分配[重复]
【发布时间】:2019-01-20 00:06:01
【问题描述】:

我正在我的 Mac 上为 React native 设置环境,我必须有这些环境变量:

export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

所以我的.bash_profile 文件看起来像这样(见下文);恐怕我的不同设置的PATH 变量的定义会发生冲突。

# Setting PATH for Python 3.6
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
export PATH

# added by Anaconda3 4.3.0 installer
export PATH="//anaconda/bin:$PATH"

# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

# Setting PATH for Flutter
export PATH = /Users/juliencorbin/flutter/bin:$PATH

# Setting path for Android home (react native tools) 
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools


export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

此外,当我运行source $HOME/.bash_profile 时,我收到以下错误:

/Users/myname/.bash_profile:16: bad assignment

我应该如何处理所有这些 PATH 分配?专门针对 React native,这是我现在最想使用的。

【问题讨论】:

    标签: bash macos


    【解决方案1】:

    错误在这一行:

    export PATH = /Users/juliencorbin/flutter/bin:$PATH
    

    Bash splits each command line in words 使用IFS 环境变量中列出的字符作为分隔符(默认分隔符为<space><tab><newline>)。第一个词是要执行的命令,其余的是它的参数。

    上面的行被分成 4 个单词。第一个词是 export,它接收 3 个参数(PATH=/Users/juliencorbin/flutter/bin:...),而它只需要一个。

    Bash 命令和脚本中的赋值不得= 运算符周围有空格字符。错误的行必须是:

    export PATH=/Users/juliencorbin/flutter/bin:$PATH
    

    删除= 周围的空格,并确保您要分配给PATH 的值中没有嵌入空格。如果您放在那里的路径之一包含空格,则将整个右侧值用引号 ("/Users/... ") 括起来。

    【讨论】:

    • 我不知道,非常有趣,非常感谢@axiac 的帮助!因此我有一个问题:我的 PATH 变量是否适合这些东西(Anaconda、Python、flutter 等)?当我打印echo $PATH 时,我觉得我添加了所有这些路径:(见下面的评论)
    • /Users/juliencorbin/.nvm/versions/node/v8.0.0/bin:/Users/juliencorbin/flutter/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin://anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin://anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/opt/node@8/bin:/Users/juliencorbin/.yarn/bin:./bin:./node_modules/.bin:/usr/local/opt/rbenv/shims:/usr/local/opt/rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/local/sbin 等加上 Android 路径(太长,无法粘贴所有内容)
    • 当您在终端中键入不带路径的命令名称(例如 ls)时,shell 会搜索 $PATH 中列出的每个路径,直到找到该命令。似乎您的 .bash_profile 被执行了两次(或者,某些路径被两次添加到 PATH 变量中)。这本身不是问题。
    • 好的。所以这是完美的。正是我想要的。非常感谢@axiac!
    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    相关资源
    最近更新 更多