¿Cuál es la diferencia entre "echo $PATH" y /etc/paths?

¿Cuál es la diferencia entre "echo $PATH" y /etc/paths?

Cuando hago eco de $PATH me sale esto: Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools.

Quiero eliminar algunas rutas de esto, pero cuando abro el archivo usando el comando vim /etc/paths, obtengo los siguientes resultados:

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

¿El archivo /etc/paths es diferente de la variable $PATH?

Respuesta1

/etc/pathses parte de lo que se usa para configurar $PATHlos procesos de shell. Cuando abre una nueva ventana de Terminal, se inicia bash, que ejecuta varios scripts de inicio: /etc/profileAND ~/.bash_profileOR (si no existe) ~/.bash_loginOR (si tampoco existe) ~/.profile. Estos scripts configuran el entorno del shell, incluido $PATH.

Una de las cosas /etc/profileque hace es ejecutar /usr/libexec/path_helper, que lee /etc/pathstodos los archivos /etc/paths.dy agrega su contenido $PATH. Pero esto es sólo un punto de partida; su propio script de inicio (si existe alguno) puede agregarlo $PATH, editarlo, reemplazarlo por completo, etc.

Me parece que su secuencia de comandos de inicio (y/o las cosas que ejecuta) está agregando una cantidad de entradas al conjunto básico que obtiene /etc/paths. "Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:" se agrega al principio de $PATH(lo que significa que esos directorios se buscarán primero) y ":/Users/mac/Library/Android/sdk /platform-tools:/platform-tools" se agrega al final. Si desea saber exactamente qué los agrega, debe consultar su secuencia de comandos de inicio.

Por cierto, este proceso de configuración $PATHsolo se aplica a los shells de "inicio de sesión" de bash. Cualquier cosa ejecutada por un shell bash heredará $PATHde él, por lo que probablemente tenga esencialmente lo mismo. Los shells bash sin inicio de sesión siguen un proceso de configuración algo diferente. Otros shells y cosas que no se inician desde un shell (por ejemplo, trabajos cron) pueden tener archivos $PATHs.

Respuesta2

Los primeros lugares donde buscaría modificaciones son:

~/.profile
~/.bashrc
~/.bash_profile

Si está utilizando algo que no es Bash, verifique los archivos de configuración para ver cualquier mención de PATH.

información relacionada