La mención de error "tipo" se refiere al tipo de datos de la variable, como cadena o matriz.
$PATH
es una cadena, $path
es un array. No se puede asignar una cadena, ya sea por variable o por literal, a una variable tipada para contener un array, ya que los tipos no coinciden.
En cuanto a cuál es la diferencia entre las dos variables: están destinadas a representar la misma lista de carpetas, pero en formatos diferentes. $PATH
que contiene /path/to/one:/path/to/two
significaría que $path
es el primer elemento de /path/to/one
y el segundo es /path/to/two
.
No deberías necesitar manejar las dos variables (y asignar una a la otra no funcionará ya que los tipos no coinciden) - el shell debería manejarlo por ti. Simplemente añada a la variable $PATH
y la ruta que añada debe existir como un elemento de $path
.
Esto sólo se aplica en zsh
heredado de *csh
. Puede ver la "unión" entre las dos variables con typeset -p PATH
.
$path
ser una matriz es realmente conveniente:
-
La adición y alteración de la ruta puede hacerse con operaciones de matriz como append en lugar de la manipulación de cadenas (lo que requiere dividir y unir en el caso de la edición en algún lugar del medio).
-
el bucle a través es sólo for i ($path) { … }
sin necesidad de ocuparse de la configuración del carácter de división correcto.