export ENV_VAR="/Applications/Android Studio.app"
dovrebbe impostare correttamente la variabile, ma è probabile che il programma / script che usa la variabile non lo citi correttamente. Se riesci a capire cosa sta usando la variabile, potrebbe essere possibile correggere lo script / programma.
La mia prima ipotesi sarebbe che la variabile d'ambiente sia usata da uno script di shell che fa qualcosa del tipo:
somecommand $ENV_VAR/subdir/filename
Il problema si verifica perché la shell espanderà la variabile, quindi eseguirà la divisione delle parole, ovvero dividerà /Applications/Android Studio.app/subdir/filename
in due argomenti: /Applications/Android
e Studio.app/subdir/filename
. Si noti che incorporare gli escape o le virgolette nel valore della variabile non fa nulla di utile, perché la shell elabora le virgolette e fugge prima eseguendo sostituzioni di variabili. Pertanto, se hai utilizzato export ENV_VAR="/Applications/Android\ Studio.app"
, sarebbe suddiviso in /Applications/Android\
e Studio.app/subdir/filename
; se hai utilizzato export ENV_VAR="'/Applications/Android Studio.app'"
, verrà diviso in '/Applications/Android
e Studio.app/subdir/filename'
.
La soluzione è mettere virgolette attorno al riferimento di variabile, come questo:
somecommand "$ENV_VAR/subdir/filename"
che dice alla shell di non eseguire la divisione delle parole dopo la sostituzione, rimuovendo il problema.
Si noti che è anche possibile che sia qualcosa di diverso da uno script di shell, o uno script di shell che sta facendo qualcosa di più complicato come usare la variabile per costruire un'altra variabile, e possibilmente a seconda della divisione di parole quando viene usata quella variabile. La risoluzione di questo tipo di utilizzo può diventare complicata.