J'ai enregistré un script Shell dans bin (créé par moi). Lorsque j'exécute le programme, pour éviter ./ d'exécuter le script, je dois le copier dans l'un des répertoires spécifiés par la variable PATH. Le répertoire bin créé ne figure pas dans la liste des chemins. Donc, pour ajouter à la liste PATH:
export PATH=~/bin:"$PATH"
Mais ce répertoire n'est pas enregistré dans la liste PATH. Lorsque j'ouvre une nouvelle fenêtre de terminal, je dois l'exporter à nouveau pour exécuter le script. Comment puis-je l'ajouter à la liste PATH de manière permanente? De plus, si j'essaie de déplacer le script dans le répertoire actuel de la liste PATH, il indique PERMISSION DENIED. Dois-je le déplacer en devenant un utilisateur root?
Vous pouvez ajouter export PATH=~/bin:"$PATH"
à votre fichier ~/.profile
. Ajoutez-le en bas, sauvegardez puis reconnectez-vous à SSH.
Si vous souhaitez que ce changement concerne tout le système, vous pouvez également modifier le chemin dans /etc/environment
.
Celui-ci a fonctionné pour moi.
Ouvrez votre .bashrc gedit ~/.bashrc
L'éditeur de texte est ouvert.
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Collez ceci et éditez le .bashrc. Après avoir fermé l’éditeur de texte, source ~/.bashrc
Si vous obtenez une autorisation refusée, cela signifie que le script n'est pas au format exécutable. chmod 755 program_name
Cela devrait faire le travail. Ouvrez le nouveau terminal et cela fonctionnera.
~/.profile
Ajoutez cette ligne après tous les vars liés à $ PATH:
export PATH="$PATH:$HOME/your-home-dir-path"
Enregistrer le fichier.
Déconnexion/Redémarrage.
En ajoutant ceci à votre ~/.profile
, activez cette modification en mode terminal et texte.
~/bin
ou ~/.local/bin
!!!Comme déjà dit dans le commentaire de la question, ces emplacements sont déjà inclus dans PATH dans Ubuntu!
Vous pouvez simplement:
~/bin
).Changez ses permitions pour être exécutable avec la commande:
chmod +x ~/bin/script.sh
Déconnexion/connexion. Alternativement, vous pouvez exécuter source ~/.profile
Comme déjà mentionné, votre ~/.profile devrait déjà contenir quelque chose comme ce qui suit:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Cependant, on dirait que vous lancez un shell bash interactif (c'est-à-dire que vous ne vous connectez pas via ssh mais que vous lancez un terminal à partir d'un environnement de bureau). qui ne lit pas ~/.profile et à la place ~/.bashrc est lu comme expliqué ici .
Vous pouvez modifier ~/.bashrc pour ajouter le chemin ou lire ~/.profile pour les shells non connectés comme expliqué ici mais comme Jacob l’a mentionné, si vous vous déconnectez/vous connectez, ceci n’est pas obligatoire.
Pour comprendre la différence entre un shell connecté et non connecté, voir ceci réponse .
Quand tu cours
export PATH=~/bin:"$PATH"
vous définissez la variable d'environnement PATH et l'exportez vers les terminaux parents en cours d'exécution. C'est comme si on disait "la nouvelle variable PATH est la suivante, répandre la Parole". Cela fonctionne, mais une fois que vous redémarrez votre ordinateur, le PATH reviendra à celui configuré. Pour rendre la modification permanente, vous devrez éditer le fichier .profile de votre dossier personnel. Il a généralement ceci:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
qui inclurait automatiquement le dossier $ HOME/bin s’il existe. Sinon, vous pouvez simplement ajouter les commandes ci-dessus ou:
export PATH="$PATH:$HOME/bin"
dans le fichier et ce dossier sera inclus dans le PATH à chaque session de votre utilisateur.
Vous devez disposer d'autorisations root pour écrire dans le répertoire/usr/bin, mais cela n'est pas nécessaire si vous modifiez le fichier .profile.