AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 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

Tendo problemas para definir variáveis ​​de ambiente no Terminal no macOS High Sierra

  • 772

Estou com um problema ao definir uma variável de ambiente no meu MacBook Pro executando o macOS High Sierra.

No terminal, tentei configurar uma variável de ambiente executando export VARIABLE_URL=example.com. Em seguida, tentei verificar se a variável de ambiente estava definida com echo $VARIABLE_URL, mas ela retornou um resultado em branco.

Agora, sempre que inicio o terminal, recebo esta mensagem:

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$

Tentei adicionar a variável ao meu .bash_profilearquivo, mas mesmo isso não define a variável corretamente. Toda vez que eu faço echo $VARIABLE_URL, ele retorna em branco.

Eu defini outras variáveis ​​no meu .bash_profile, mas esta é a única variável que meu computador se recusa a adicionar.

Mesmo quando executo printenv, todas as variáveis ​​de ambiente são exibidas, exceto VARIABLE_URL.

Por que não posso definir essa variável de ambiente?

Editar: Aqui está o conteúdo do meu .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: Aqui está o que é exibido quando abro o terminal agora:

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$

...e aqui está o que é retornado quando printenvé executado:

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$

Edição Final: Foi resolvido! Adicionar aspas simples ao URL funcionou:

export VARIABLE_URL='example.com'

Eu deveria ter explicado explicitamente que o URL mostrado nessas perguntas é um URL de espaço reservado, não aquele que estava realmente no meu arquivo .bash_profile. A URL real contém, de fato, vários &caracteres. Me desculpe por não explicar isso desde o início. Eu sinto que se eu tivesse feito isso, o problema teria sido resolvido mais cedo. Independentemente disso, obrigado a todos por sua ajuda e sugestões, estou muito feliz por ter tudo resolvido agora.

bash macos terminal
  • 2 2 respostas
  • 2013 Views

2 respostas

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

    Pela saída que você está obtendo de .bash_profile, imagino que você tenha algo assim:

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

    Você não quer os &caracteres " " ali, eles mudam o significado de maneiras irrelevantes e inúteis. Você pode definir várias variáveis ​​de ambiente em um único exportcomando, separando-as com espaços:

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

    Ou pode ser mais claro usar apenas um exportcomando separado para cada variável:

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

    BTW, a razão pela qual " &" causa problemas é que é um delimitador entre os comandos e faz com que o comando seja executado em segundo plano. Portanto, cada atribuição é tratada como um comando completamente separado (somente o primeiro é um export, o restante são variáveis ​​de shell não exportadas) e todos, exceto o último, são executados em segundo plano em processos separados , e as definições são locais para esses processos (e desaparecem quando esses processos terminam). Isso é o que todas essas linhas "Concluídas" são - elas indicam que esses processos em segundo plano foram concluídos.

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

    Minha hipótese:

    Sua URL real usa o método HTTP GET, assim:

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

    Onde ?e &fazem parte da sintaxe da URL, mas o shell os interpreta de maneira diferente. &faz com que o comando anterior seja executado em segundo plano. Também é um separador, portanto, em vez de um comando, você tem vários. O primeiro é

    export VARIABLE_URL=example.com?foo=bar
    

    e esse valor é exportado como VARIABLE_URL.

    Outra suposição: shopt -s nullglobestá ativo, portanto, a ?partir da sintaxe GET faz com que sem aspas $VARIABLE_URLse expanda para uma string nula em qualquer diretório onde não haja arquivos correspondentes ao padrão example.com?foo=bar.

    Você quer

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

    onde as aspas simples tornam o shell tratar ?e os &caracteres literalmente (aspas duplas também funcionariam com este exemplo específico; mas não conheço seu URL real, as aspas simples são mais seguras em geral). Adicionalmente

    echo "$VARIABLE_URL"
    

    onde as aspas duplas impedem o globbing (que, de outra forma, ocorreria devido ?ao conteúdo da variável), independentemente dos nullglobarquivos e no diretório atual.

    • 1

relate perguntas

  • Como forçar o chrome a usar o arquivo pac no macos?

  • Existe um equivalente a cd - para cp ou mv?

  • “npm config set prefix” falha no diretório de propriedade do usuário no macOS Mojave

  • Notificar-enviar notificações aparecendo na janela

  • como abrir um arquivo de escritório do WSL

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    Serviço do Windows 10 chamado AarSvc_70f961. O que é e como posso desativá-lo?

    • 2 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Marko Smith

    ssl.SSLCertVerificationError: falha na verificação do certificado [SSL: CERTIFICATE_VERIFY_FAILED]: não foi possível obter o certificado do emissor local (_ssl.c:1056)

    • 4 respostas
  • Marko Smith

    Como posso saber em qual unidade o Windows está instalado?

    • 6 respostas
  • Martin Hope
    Albin Como faço para ativar o WindowsXP agora que o suporte acabou? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch O Windows 10 exclui muitos arquivos minúsculos muito lentamente. Algo pode ser feito para agilizar? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Como Ctrl+C e Ctrl+V funcionam? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve