Cómo agregar una ruta al sistema $ PATH para el shell de todos los usuarios que no son de inicio de session para debian

Después de instalar algunos progtwigs en /opt/xxx/bin , deseo agregar /opt/xxx/bin al sistema $PATH para el shell de todos los usuarios que no inicie session. ¿Que debería hacer?

En Debian y otros sistemas que usan PAM (que es la mayoría de ellos hoy en día), puede establecer variables de entorno (incluida PATH ) en /etc/environment . Esto funcionará para cualquier método de inicio de session que use el module pam_env (en la sección de auth o en la sección de la session ); en Debian deberían ser todos ellos (al less los que proporcionan forms de iniciar session y ejecutar commands).

La ruta pnetworkingeterminada podría establecerse en /etc/profile como dijo Joe, pero también en $HOME/.profile . También tengo muchos packages comstackdos por mi count (con el procedimiento común ./configure --prefix=/opt/<name> ) instalado en /opt . Para ejecutar los binarys en /opt/<name>/bin sin ningún esfuerzo adicional, agregué

 OPTDIR=/opt for i in $OPTDIR/* ; do BINDIR=$i/bin if [ -d $BINDIR ] ; then if [ -z $PATH ] ; then PATH=$BINDIR else PATH=$BINDIR:$PATH fi fi done export PATH 

a mi $HOME/.profile que en su caso sería /etc/profile . Ahora, incluso si instalo packages en /opt en el futuro, no tengo que preocuparme por acceder a los binarys relacionados en /opt/.*/bin ya que la ruta se agrega automáticamente a $PATH .

Como el software adicional no es necesario, prefiero $HOME/.profile a /etc/profile .


Una pequeña observación: /etc/.profile respectivamente $HOME/profile no se ejecuta por su shell pnetworkingeterminado sino por dash . Una variante ligera de bash que networkinguce la carga durante el process de arranque.

La ruta pnetworkingeterminada se puede establecer en / etc / profile

Pero solo estaba buscando en mi sistema Ubuntu, y está configurado en / etc / environment

Encontré la respuesta más excelente en serverfault por Gilles :

¿Cómo se establece PATH para todos los usuarios en Debian?

El primer lugar donde se establece PATH es /etc/login.defs . Hay una configuration para root y otra para todos los demás.

Otro lugar donde puede definir variables de entorno es /etc/environment . Esta configuration se aplicará a todos (no se puede escribir código de shell arbitrario allí).

Un tercer lugar donde puede definir variables de entorno es /etc/profile . Allí puedes escribir código de shell arbitrario. Si desea una configuration específica para el usuario, existe el file correspondiente por usuario ~www-data/.profile . Pero esto solo se aplicará a los inicios de session interactivos de console; en particular, no se aplicará a trabajos cron a less que ellos explícitamente fuente /etc/profile .

Si solo necesita esa configuration de PATH en un crontab de usuario, puede escribirla al comienzo del crontab. Tenga en count que necesita la list completa ( PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin ), no puede usar una sustitución de variable ( PATH=$PATH:/usr/local/zend/bin no funcionará allí).

su command restablece el valor del entorno PATH a uno definido en /etc/login.defs mediante variables ENV_PATH y ENV_SUPATH. no te olvides de configurar este file. mira aquí