¿Cómo se puede usar /etc/paths.d para agregar una ruta con espacios en $ PATH?

2

Recientemente instalé VMware Fusion 10 en una Mac con macOS 10.12.6. Después de hacerlo, mi bash PATH está roto. Rastreé el problema a un archivo de ruta /etc/paths.d que Fusion instaló; contiene la siguiente entrada (sin nueva línea):

/Applications/VMware Fusion.app/Contents/Public

Note el espacio en la ruta de acceso. Con este presente, al iniciar un shell obtengo un error:

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

Y mi PATH resultante está corrompida. Intenté agregar una nueva línea, poner la ruta entre comillas dobles y poner una barra invertida antes del espacio; todos estos producen un error (a veces errores diferentes). Por ejemplo, agregar la barra diagonal inversa o el ajuste con comillas dobles da el mismo error. Ambos cambios juntos da:

-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

Estoy empezando a preguntarme si es posible que path_helper no pueda manejar ese caso de uso. ¿Hay una manera de manejar esto?

    
pregunta Tom Loredo 26.01.2018 - 03:02

2 respuestas

1

Mi /etc/paths.d/com.vmware.fusion.public contiene:

 /Applications/VMware Fusion.app/Contents/Public

En la Terminal, echo $PATH produce:

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

No tengo ningún problema con mi PATH o ejecutando, por ejemplo, vmrun , que está en el directorio /Applications/VMware Fusion.app/Contents/Public , por lo que tener el espacio no es un problema. ¡Tu PATH se está estropeando en otra parte!

¿Has modificado /etc/paths o has añadido un ~/.bash_profile o ~/.profile , y si es así, estás modificando el PATH en cualquiera de estos archivos?

    
respondido por el user3439894 28.03.2018 - 23:43
0

Así que intentaré y le daré a este el mejor intento de la universidad. Así que después de jugar con esto durante aproximadamente una hora, llegué a la conclusión de que path_helper - la aplicación nativa que construye una variable de entorno PATH desde /etc/paths y /etc/paths.d no juega bien con caminos que tienen espacios en ellos, es decir. por lo tanto, ¿por qué estás experimentando tu situación actual?

Así que mi solución hacky para hacer que esto funcione es crear un enlace simbólico a partir de,

/Applications/VMware Fusion.app

a

/Applications/VMwareFusion.app

usando el siguiente comando,

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

Luego, edita /etc/paths.d/com.vmware.fusion.public y cambia la línea de ese archivo para que se vea como se muestra a continuación,

/Applications/VMwareFusion.app/Contents/Public/

Luego, obviamente, inicie una nueva sesión de shell o reinicie.

Esta solución funciona muy bien para mí usando la cáscara de pescado.

    
respondido por el ipatch 27.03.2018 - 20:32

Lea otras preguntas en las etiquetas