Home > front end >  how to refer and see env var in shell if the var name is long and has spaces? how to use echo on it?
how to refer and see env var in shell if the var name is long and has spaces? how to use echo on it?

Time:09-17

my env var is IntelliJ IDEA Community Edition. using win10 gitbash.

IntelliJ IDEA Community Edition C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.3.2\bin

How to do echo? This is not working:

>echo $IntelliJ IDEA Community Edition
>echo ($IntelliJ IDEA Community Edition)
>echo $%IntelliJ IDEA Community Edition%
>echo %IntelliJ IDEA Community Edition%
>echo '$%IntelliJ IDEA Community Edition%'

>echo 'IntelliJ IDEA Community Edition'

Other env vars without spaces like QT_SCALE_FACTOR_ROUNDING_POLICY do work using

echo $QT_SCALE_FACTOR_ROUNDING_POLICY

EDIT with help of Charles Duffy:

i used env | grep IDEA and i did get all the stuff with 'IDEA' including the path that i need:

$ env | grep IDEA
IntelliJ IDEA Community Edition=C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.3.2\bin;
PATH=/c/Users/erjan/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/erjan/bin:/c/Program Files/Eclipse Foundation/jdk-11.0.12.7-hotspot/bin:/c/Program Files (x86)/Common Files/Oracle/Java/javapath:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Windows/System32/OpenSSH:/c/Program Files (x86)/Microsoft SQL Server/150/DTS/Binn:/c/Program Files/PuTTY:/c/Program Files/Calibre2:/c/Program Files/nodejs:/cmd:/c/Program Files/Docker/Docker/resources/bin:/c/ProgramData/DockerDesktop/version-bin:/c/python38/Scripts:/c/python38:/c/Users/erjan/AppData/Local/Microsoft/WindowsApps:/c/Program Files/Azure Data Studio/bin:/c/Users/erjan/AppData/Local/Programs/Microsoft VS Code/bin:/c/Users/erjan/AppData/Roaming/npm:/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.3.2/bin:/c/kafka_2.12-2.8.0/bin/windows:/usr/bin/vendor_perl:/usr/bin/core_perl
ORIGINAL_PATH=/mingw64/bin:/usr/bin:/c/Users/erjan/bin:/c/Program Files/Eclipse Foundation/jdk-11.0.12.7-hotspot/bin:/c/Program Files (x86)/Common Files/Oracle/Java/javapath:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Windows/System32/OpenSSH:/c/Program Files (x86)/Microsoft SQL Server/150/DTS/Binn:/c/Program Files/PuTTY:/c/Program Files/Calibre2:/c/Program Files/nodejs:/cmd:/c/Program Files/Docker/Docker/resources/bin:/c/ProgramData/DockerDesktop/version-bin:/c/python38/Scripts:/c/python38:/c/Users/erjan/AppData/Local/Microsoft/WindowsApps:/c/Program Files/Azure Data Studio/bin:/c/Users/erjan/AppData/Local/Programs/Microsoft VS Code/bin:/c/Users/erjan/AppData/Roaming/npm:/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.3.2/bin:/c/kafka_2.12-2.8.0/bin/windows

CodePudding user response:

Since you're on Windows and don't have procfs, the easiest way to retrieve the full environment is with env.

Note that whether the shell strips environment variables with names that don't match legal shell variable names from the environment (thus also making them unavailable to tools like env) is implementation-defined; the POSIX sh standard makes it legal for shells to strip such names, but also legal to leave them in, so whether this works can vary by version.

idea=$(env | sed -rne '/^IntelliJ IDEA Community Edition=/ { s/^[^=] =//p }')
if [[ $idea ]]; then
  echo "Found IntelliJ at: $idea"
else
  echo "Could not find IntelliJ"
fi
  • Related