Cuando me echo $ 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
¿Es el archivo / etc / caminos diferente de la variable $ PATH?
/etc/paths
en el mío, pero estoy corriendo10.4.11
y las cosas probablemente han cambiado desde entonces/etc/paths
se utiliza para generar el valor por defecto$PATH
, que se puede modificar más adelante~/.bashrc
o~/.profile
Respuestas:
/etc/paths
es parte de lo que se usa para configurar$PATH
procesos de shell. Cuando abre una nueva ventana de Terminal, se iniciabash
, que ejecuta varios scripts de inicio:/etc/profile
AND~/.bash_profile
OR (si eso no existe)~/.bash_login
OR (si eso tampoco existe)~/.profile
. Estas secuencias de comandos configuran el entorno de shell, incluido$PATH
.Una de las cosas que
/etc/profile
hace es ejecutar/usr/libexec/path_helper
, que lee/etc/paths
y cualquier archivo/etc/paths.d
, y agrega sus contenidos$PATH
. Pero esto es solo un punto de partida; su propio script de inicio (si existe) puede agregarlo$PATH
, editarlo, reemplazarlo por completo, etc.Me parece que su script de inicio (y / o las cosas que ejecuta) está agregando una serie de entradas al conjunto básico del 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 está agregando, debe mirar su script de inicio.Por cierto, este proceso de configuración
$PATH
solo se aplica a los shells de "inicio de sesión" de bash. Cualquier cosa ejecutada por un shell bash heredará$PATH
de él, por lo que probablemente tenga esencialmente lo mismo. Los shells de bash sin inicio de sesión siguen un proceso de configuración algo diferente. Otros shells, y las cosas que no comenzaron desde un shell (por ejemplo, trabajos cron) pueden ser completamente diferentes$PATHs
.fuente
/usr/local/bin/bash
, Según lo instalado porbrew
, sin el-l
argumento),/usr/libexec/path_helper
no se usa y/usr/local/bin
no se incluye de manera predeterminada en$PATH
. Para usarpath_helper
en un script o interactivamente, el comando eseval $(/usr/libexec/path_helper)
.Los primeros lugares en los que buscaría verificar las modificaciones son,
Si está usando algo que no es Bash, verifique los archivos de configuración para ver cualquier mención de PATH.
fuente