Come si può usare /etc/paths.d per aggiungere un percorso con spazi in esso a $ PATH?

2

Recentemente ho installato VMware Fusion 10 su un Mac con macOS 10.12.6. Dopo averlo fatto, il mio PATH bash è rotto. Ho rintracciato il problema in un file /etc/paths.d che Fusion ha installato; contiene la seguente voce (senza nessuna nuova riga):

/Applications/VMware Fusion.app/Contents/Public

Notare lo spazio nel nome del percorso. Con questo presente, all'avvio di una shell ottengo un errore:

-bash: export: 'Fusion.app/Contents/Public:/Library/TeX/texbin': not a valid identifier

E il PATH risultante è danneggiato. Ho provato ad aggiungere una nuova riga, inserire il percorso tra virgolette e inserire una barra rovesciata prima dello spazio; tutti questi producono un errore (a volte diversi errori). Ad esempio, l'aggiunta del backslash o del wrapping con doppi apici dà lo stesso errore. Entrambe le modifiche danno insieme:

-bash: test: /Users/loredo/Library/Commands:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Applications/VMware: binary operator expected
-bash: test: /Users/loredo/Library/Commands:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Applications/VMware: binary operator expected
-bash: test: /usr/local/var/rbenv/shims:/Users/loredo/Library/Commands:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Applications/VMware: binary operator expected
-bash: export: 'Fusion.app/Contents/Public:/Library/TeX/texbin:.:/usr/texbin:/usr/local/cuda/bin': not a valid identifier

Sto iniziando a chiedermi se path_helper potrebbe non essere in grado di gestire un caso d'uso simile. C'è un modo per gestire questo?

    
posta Tom Loredo 26.01.2018 - 03:02
fonte

2 risposte

1

Il mio /etc/paths.d/com.vmware.fusion.public contiene:

 /Applications/VMware Fusion.app/Contents/Public

In Terminal, echo $PATH output:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public

Non ho alcun problema con il mio PATH o l'esecuzione ad es. vmrun , che si trova nella directory /Applications/VMware Fusion.app/Contents/Public , quindi avere lo spazio non è un problema. Il tuo PATH è stato incasinato altrove!

Hai modificato /etc/paths o hai aggiunto ~/.bash_profile o ~/.profile , e in tal caso stai modificando PATH in uno di questi file?

    
risposta data 28.03.2018 - 23:43
fonte
0

Quindi proverò a dare a questo il tentativo del vecchio college. Quindi, dopo aver lavorato per circa un'ora, sono giunto alla conclusione che path_helper - l'app nativa che costruisce una variabile d'ambiente PATH da /etc/paths e /etc/paths.d non gioca bene con i percorsi che contengono spazi, ad es. quindi perché stai vivendo la tua situazione attuale.

Quindi la mia soluzione hacky per farlo funzionare, è creare un link simbolico da,

/Applications/VMware Fusion.app

a

/Applications/VMwareFusion.app

utilizzando il comando di sotto,

ln -sf /Applications/Vmware Fusion.app /Applications/VmwareFusion.app

Quindi modifica /etc/paths.d/com.vmware.fusion.public e cambia la riga di quel file in modo che assomigli al seguente,

/Applications/VMwareFusion.app/Contents/Public/

Quindi avvia ovviamente una nuova sessione di shell o reinizializza.

Questa soluzione funziona perfettamente per me usando la conchiglia di pesce.

    
risposta data 27.03.2018 - 20:32
fonte

Leggi altre domande sui tag