Dans mon ~/.profile
J'ai un dernier bloc qui devrait charger mon bin/ directory
comme ça:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Mais il est apparemment pas chargé:
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Pourquoi cela ne fonctionne-t-il pas? (Ma coquille est bash.)
Modifier pour 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/"
Du haut 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.
Donc (si vous utilisez bash
comme votre coquille), je suppose que ~/.bash_profile
ou ~/.bash_login
est sur votre système. Sélectionnez un et modifiez-le pour inclure:
export PATH=$PATH:$HOME/bin
Ensuite, enregistrez et source ~/.bash_login
ou déconnectez-vous et reconnectez-vous.
éditer:
Vous dites que les deux ~/.bash_profile
et ~/.bash_login
sont manquants de votre $HOME
. Je pense que nous avons besoin de confirmer quelques choses. Veuillez poster les résultats des éléments suivants dans votre question initiale:
echo $0
echo $HOME
whoami
less /etc/*-release
Edit 2:
Personnellement, je ne sais pas pourquoi ~/.profile
n'est pas inclus dans votre cas en fonction des informations fournies et de la documentation. Tout en testant, j'ai remarqué que mon ~/.profile
est numérisé lorsque je ssh
in mais pas lorsque je lance un nouveau terminal.
Mais, il existe une solution simple pour permettre à $HOME/bin
à inclure dans votre coquille interactive. Modifier (Créer s'il n'est pas présent) ~/.bashrc
et ajoutez-y la ligne suivante:
export PATH=$PATH:$HOME/bin
Enregistrez, déconnectez-vous et reconnectez-vous dans ou source ~/.bashrc
.
La ligne export
pourrait être étendue pour vérifier que $HOME/bin
existe si vous le souhaitez:
if [ -d "$HOME/bin" ]
then
export PATH=$PATH:$HOME/bin
fi
Pourquoi ~/.bashrc
au lieu d'un autre fichier? Personnellement la préférence et semble être plus fiable aussi.
Les Règles pour les fichiers de démarrage shell d'approvisionnement sont complexes . Il est probable que avec votre configuration, .profile
ne pas être inclus lorsque vous ouvrez un nouveau terminal dans une session x (essayez de mettre un echo .profile
à l'intérieur de .profile
et voir si le message apparaît lorsque vous démarrez une coquille).
. "$HOME/.profile"
devrait recharger le profil manuellement.
Se connecter et sortir de x devrait également causer .profile
charger.
Alternativement, vous pouvez faire . $HOME/.profile
de .bashrc
(lors de l'utilisation d'une protection à base de variable pour empêcher la double inclusion) pour vous assurer que .profile
est toujours inclus chaque fois que vous démarrez une coquille.
(Vous ne devriez pas avoir besoin de export PATH
_ _ PATH
est déjà une variable exportée et modifier sa valeur ne changera pas son statut export
.)
Si vous voulez obtenir .profile
chargé tout ce dont vous avez besoin est de démarrer une coquille de connexion:
$ bash -l
Cela devrait suffire à une session de course. Vous pouvez comparer le chemin avant et après qu'un identifiant Bash a été démarré pour confirmer la différence.
Pour une solution plus permanente, vous avez besoin d'une coque de connexion à démarrer à un moment donné avant la démarrage de votre terminal (console). Le login en tant qu'utilisateur spécifique se produit sur certains DM (gestionnaire d'affichage) (GNOME, KDE, XFCE, LXDE, etc.). Il devrait être le travail de l'un d'entre eux de modifier le chemin de la variable d'environnement pour répondre à vos besoins.
Par exemple, pour XFCE, la solution consiste à changer 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"
Pour Gnome, il semble que le fichier à changer est ~/.pam_environment
.
Et pour KDE, Suivez ce guide , pour créer le fichier, vous pouvez utiliser ce code:
$ file='$HOME/.config/plasma-workspace/env/path.sh'
$ code='export PATH=$HOME/bin:$PATH'
$ echo "$code" >> "$file"
Ce lien a également des informations utiles.