AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1420628
Accepted
Brian
Brian
Asked: 2019-04-03 14:41:38 +0800 CST2019-04-03 14:41:38 +0800 CST 2019-04-03 14:41:38 +0800 CST

在 macOS High Sierra 的终端中设置环境变量时遇到问题

  • 772

我在运行 macOS High Sierra 的 MacBook Pro 上设置环境变量时遇到问题。

在终端中,我尝试通过执行来设置环境变量export VARIABLE_URL=example.com。然后我尝试检查环境变量是否设置为echo $VARIABLE_URL,但返回空白结果。

现在每当我启动终端时,我都会收到这条消息:

Last login: Tue Apr  2 15:08:56 on ttys000
[1]   Done                    export VARIABLE_URL=example.com
[2]   Done                    appVersion=
[3]   Done                    osVersion=
[4]   Done                    deviceType=
[5]+  Done                    deviceId=
My-MacBook-Pro:~ me$

我尝试将变量添加到我的.bash_profile文件中,但即使这样也没有正确设置变量。每次我这样做echo $VARIABLE_URL,它都会返回空白。

我在 my 中设置了其他变量.bash_profile,但这是我的计算机拒绝添加的唯一变量。

即使在我执行时printenv,也会显示除VARIABLE_URL.

为什么我不能设置这个环境变量?

编辑:这是我的内容.bash_profile:

export BACKEND=example
export VARIABLE_URL=example.com
export HOST=localhost
export BASEURL=example
export SECRET=example
export USERNAME=example
export ACCESS_KEY=example

Edit2:这是我现在打开终端时显示的内容:

Last login: Wed Apr  3 13:06:20 on ttys000
+ export BACKEND=example
+ BACKEND=example
+ export 'VARIABLE_URL=example.com'
+ VARIABLE_URL='example.com'
+ appVersion=
+ osVersion=
+ deviceType=
+ clientType=
+ export HOST=localhost
+ HOST=localhost
+ export BASEURL=example
+ BASEURL=example
+ export SECRET=example
+ SECRET=example
+ export USERNAME=example
+ USERNAME=example
+ export ACCESS_KEY=example
+ ACCESS_KEY=example
+ deviceId=
My-MacBook-Pro:~ me$

...这是printenv执行时返回的内容:

TERM_PROGRAM=Apple_Terminal
USERNAME=example
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/g6/q9bwlzxn36jfb2j53c5t_t080000gn/T/
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.GZQ9CxlO7F/Render
TERM_PROGRAM_VERSION=404.1
TERM_SESSION_ID=45B1D3A5-719E-4C24-9026-C52A374B3809
USER=me
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.nXK7LMtVZx/Listeners
BACKEND=example
SECRET=example
HOST=localhost
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOS
PWD=/Users/me
LANG=en_US.UTF-8
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
SHLVL=1
HOME=/Users/me
LOGNAME=me
ACCESS_KEY=example
BASEURL=example
_=/usr/bin/printenv
My-MacBook-Pro:~ me$

最终编辑:它已经解决了!在 URL 中添加单引号就可以了:

export VARIABLE_URL='example.com'

我应该明确解释这个问题中显示的 URL 是一个占位符 URL,而不是我的.bash_profile. 实际的 URL 实际上包含多个&字符。很抱歉没有从一开始就解释清楚。我觉得如果我这样做了,问题就会早点解决。不管怎样,感谢大家的帮助和建议,我很高兴现在一切都解决了。

bash macos terminal
  • 2 2 个回答
  • 2013 Views

2 个回答

  • Voted
  1. Gordon Davisson
    2019-04-03T22:03:49+08:002019-04-03T22:03:49+08:00

    从你从 .bash_profile 得到的输出,我猜你有这样的东西:

    export VARIABLE_URL=example.com & appVersion= & osVersion= & deviceType= & deviceId= & somethingelse=
    

    你不想要&那里的“”字符,它们以无关紧要和无用的方式改变了意义。export您可以通过用空格分隔它们来在单个命令中定义一堆环境变量:

    export VARIABLE_URL=example.com appVersion= osVersion= deviceType= deviceId= somethingelse=
    

    export或者为每个变量使用单独的命令可能更清楚:

    export VARIABLE_URL=example.com
    export appVersion=
    export osVersion=
    export deviceType=
    export deviceId=
    export somethingelse=
    

    顺便说一句,“ &”造成麻烦的原因是它是命令之间的分隔符,并在命令在后台运行之前发出命令。因此,每个赋值都被视为一个完全独立的命令(只有第一个是 an export,其余是未导出的 shell 变量),除了最后一个在单独的进程中在后台运行,并且定义是这些进程的本地(并且消失时这些过程完成)。这就是所有那些“完成”行的含义——它们表明那些后台进程已经完成。

    • 2
  2. Best Answer
    Kamil Maciorowski
    2019-04-04T12:04:53+08:002019-04-04T12:04:53+08:00

    我的假设:

    您的实际 URL 使用 HTTP GET 方法,如下所示:

    export VARIABLE_URL=example.com?foo=bar&appVersion=&osVersion=&deviceType=&deviceId=&fizz=buzz
    

    其中?和&是 URL 语法的一部分,但 shell 对它们的解释不同。&使前面的命令在后台运行。它也是一个分隔符,所以你有多个而不是一个命令。第一个是

    export VARIABLE_URL=example.com?foo=bar
    

    并将此值导出为VARIABLE_URL.

    另一个假设:shopt -s nullglob是活动的,因此?来自 GET 语法的 unquoted$VARIABLE_URL会在没有文件匹配 pattern 的任何目录中扩展为空字符串example.com?foo=bar。

    你要

    export VARIABLE_URL='example.com?foo=bar&appVersion=&osVersion=&deviceType=&deviceId=&fizz=buzz'
    

    其中单引号使外壳按字面意思对待?和&字符(双引号也适用于此特定示例;但我不知道您的实际 URL,单引号通常更安全)。此外

    echo "$VARIABLE_URL"
    

    双引号防止通配(否则会因为?变量内容而发生),而不管nullglob当前目录中的文件。

    • 1

相关问题

  • 如何强制chrome在macos中使用pac文件?

  • 对于 cp 或 mv,是否有等同于 cd - 的东西?

  • “npm config set prefix”在 macOS Mojave 中的用户拥有的目录上失败

  • Notify-发送窗口下出现的通知

  • 如何从 WSL 打开 office 文件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve