$ HOME / bin dir no está en $ PATH

En mi ~ / .profile tengo un último bloque que debería cargar mi bin / directory personal así:

# set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi 

Pero aparentemente no está cargado:

 echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games 

¿Por qué esto no funciona?

Mi caparazón es bash.

Editar para Tigger

 echo $0 => bash echo $HOME => /home/student whoami => student less /etc/*-release => PRETTY_NAME="Debian GNU/Linux 9 (stretch)" NAME="Debian GNU/Linux" VERSION_ID="9" VERSION="9 (stretch)" ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" 

Desde la parte superior de ~/.profile :

 # ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. # see /usr/share/doc/bash/examples/startup-files for examples. # the files are located in the bash-doc package. 

Entonces (si está utilizando bash como su caparazón) supongo que ~/.bash_profile o ~/.bash_login está en su sistema. Seleccione uno y edítelo para include:

 export PATH=$PATH:$HOME/bin 

A continuación, guarde y source ~/.bash_login o cierre session y vuelva a iniciar session.

Editar :

Usted dice que tanto ~/.bash_profile como ~/.bash_login faltan en su $HOME . Creo que necesitamos confirmar algunas cosas. Por favor, publique los resultados de lo siguiente en su pregunta original:

 echo $0 echo $HOME whoami less /etc/*-release 

Editar 2 :

Personalmente, no sé por qué ~/.profile no se incluye en su caso en function de la información proporcionada y la documentation. Durante la testing, me di count de que mi ~/.profile se escanea cuando ~/.profile pero no cuando ~/.profile una nueva terminal.

Pero, hay una solución simple para permitir que $HOME/bin se incluya en su caparazón interactivo. Edite (cree si no está presente) ~/.bashrc y agregue la siguiente línea a él:

 export PATH=$PATH:$HOME/bin 

Guarde, cierre session y vuelva a iniciar session o source ~/.bashrc .

La línea de export podría expandirse para verificar que $HOME/bin exista si lo desea con:

 if [ -d "$HOME/bin" ] then export PATH=$PATH:$HOME/bin fi 

¿Por qué ~/.bashrc lugar de otro file? Preference personal y parece ser más confiable también.

Las reglas para get los files de inicio de shell son complejas . Es probable que con su configuration, .profile no se incluya cuando abre un nuevo terminal dentro de una session X (intente poner un echo .profile dentro de .profile y vea si el post aparece cuando inicia un shell).

 . "$HOME/.profile" 

debería volver a cargar el perfil manualmente

El inicio y .profile session de X también debe provocar la carga de .profile .

Alternativamente, puedes hacer . $HOME/.profile . $HOME/.profile de .bashrc (al usar un protector basado en variables para evitar la inclusión doble) para asegurarse de que .profile siempre se incluye cada vez que inicia un shell.

(No debería necesitar export PATH ya que PATH ya es una variable exportada y modificar su valor no cambiará su estado de export ).

Si desea get .profile cargado, todo lo que necesita es iniciar un shell de inicio de session:

 $ bash -l 

Eso debería ser suficiente para una session de carrera. Puede comparar la RUTA antes y después de que se haya iniciado un inicio de session para confirmar la diferencia.

Para una solución más permanente, necesita que se inicie un shell de inicio de session en algún momento antes de que comience su terminal (console). El inicio de session como usuario específico ocurre en algunos dm (administrador de pantalla) (gnome, kde, xfce, lxde, etc.). Debería ser el trabajo de cualquiera de ellos cambiar la variable de entorno PATH para que coincida con sus necesidades.

Por ejemplo, para xfce, la solución es cambiar xinitrc :

 $ cat >"$HOME/.config/xfce4/xinitrc" <<-\_EOT_ #!/bin/sh # Ensure programs in ~/bin are available for the X session. p="$HOME/bin"; [ "$p" != "${PATH%%:*}" ] && export PATH=$p:$PATH _EOT_ cat "/etc/xdg/xfce4/xinitrc" | tail -n+2 >> "$HOME/.config/xfce4/xinitrc" 

Para gnome, parece que el file para cambiar es ~/.pam_environment .

Y para KDE, siga esta guía , para crear el file, puede usar este código:

 $ file='$HOME/.config/plasma-workspace/env/path.sh' $ code='export PATH=$HOME/bin:$PATH' $ echo "$code" >> "$file" 

Este enlace también tiene información útil.