Alternative non sudo à / usr / local / bin pour les scripts courants

16

J'ai l'habitude de mettre des scripts communs /usr/local/binpour pouvoir les exécuter de n'importe où avec le terminal.

Par exemple, je crée un script shell nommé 1, le rend exécutable avec chmod +x 1et le mets /usr/local/bin, et à l'intérieur du script que je tape #!/bin/shsur la première ligne, puis mes commandes. À partir de là, il est très pratique et rapide à exécuter en tapant

1Enter

sur le terminal, depuis n'importe quel dossier.

Mon problème est que je travaille actuellement sur un ordinateur où sudoje ne peux pas le faire et je ne peux pas m'attendre à l'obtenir non plus, donc je ne peux pas y placer mon script /usr/local/bin.

Quelles sont mes options? Existe-t-il un autre chemin d'accès avec la même fonctionnalité "exécuter à partir de n'importe où", auquel je peux accéder sans sudo, ou une autre façon d'obtenir quelque chose d'équivalent?

La réponse acceptée à ce message dit

Pour les scripts à portée utilisateur, utilisez bin / dans votre répertoire personnel.

Ce que j'ai essayé, mais il n'y a pas de bindossier dans mon répertoire personnel, et quand j'en ai créé un, je ne pouvais toujours pas exécuter le script ailleurs.

Je cours sur Ubuntu 12.04 LTS.

user985366
la source
2
N'utilisez pas 1 ou quelque chose comme ça comme nom de script. Essayez de calculer quelque chose dans votre shell: par exemple expr 1 + 1 (et si vous ne le faites pas, un script le fera à un moment donné à coup sûr)
frlan
1
@frlan: Comment serait expr 1 + 1affecté par la présence d'un script nommé 1?
psmears
Vrai ... n'affecte pas expr, ni arithmétique bash $(( 1 + 1 )).
Campa

Réponses:

19

Quelles sont mes options? Existe-t-il un autre chemin d'accès avec la même fonction "exécuter à partir de n'importe où", auquel je peux accéder sans sudo, ou une autre façon d'obtenir quelque chose d'équivalent?

Comment faire?

Créez un répertoire dans votre maison pour contenir vos scripts normalement nommés bincomme convention.

mkdir ~/bin

Déplacez maintenant vos scripts vers bin

mv somescript ~/bin

Maintenant, comment le faire tuner de partout?!

Vous devez ajouter le binau CHEMIN

Ouvrez votre .bashrc

gedit .bashrc

et ajoutez cette ligne:

export PATH=$PATH:/home/username/bin

N'oubliez pas de remplacer usernamepar votre nom d'utilisateur

Enregistrez et quittez, puis sourcez le bashrc

source .bashrc

et maintenant vous allez bien, vous pouvez exécuter votre script comme vous le faisiez! mais vous devez remarquer que cela ne concerne que votre utilisateur.

Remarque: il est préférable de renommer vos scripts autres que 1, 2 car vous pouvez rencontrer des problèmes avec ces noms


MISE À JOUR:

Vous pouvez faire de même, il suffit de créer le répertoire bin dans votre maison puis source ~/.profileau lieu de ~/.bashrc. Puisque l'ajout de ~ / bin à votre CHEMIN est déjà répertorié dans.profile

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
Maythux
la source
J'utilise export PATH=$PATH:$HOME/bindonc je peux utiliser le même bashrc pour d'autres comptes avec des noms d'utilisateur différents.
Anthony G - justice pour Monica
1
Juste pour mentionner ~/bin est $PATHpar défaut sur Ubuntu. Exécutez source ~/.profileou déconnectez-vous après avoir créé le répertoire.
Jacob Vlijm
@JacobVlijm Dans quelle version? !!! J'utilise 12.04, 14.04, 15.04 et aucun d'eux n'a ~ / bin dans PATH
Maythux
Dans chacun d'eux, je l' utilise toujours , dans beaucoup de mes réponses (acceptées) également, je n'ai jamais reçu de commentaire à ce sujet, elle travaille également à la maison sur cinq systèmes, mais, comme dit, après avoir couru source ~/.profile. Voir (par exemple) ici: askubuntu.com/a/247422/72216
Jacob Vlijm
1
Il a dit source ~/.profile, il n'a jamais dit source ~/.bashrc. :) En outre, en règle générale, les variables environnementales devraient aller dans .profileet non , .bashrccar ils ne doivent être mis en place une fois. (rien de tout cela ne veut dire que votre réponse n'est pas bonne, je vous en prie, et +1 de ma part)
terdon
4

En plus de /ubuntu//a/643030/218015, vous pouvez également définir un alias à l'intérieur de votre .bashrc pour les petites tâches souvent utilisées. Par exemple

alias ll='ls -l'
alias ls='ls --color=auto'

va vous créer une "commande" ll, qui fait ls -l et ls sera coloré après avoir défini l'alias. https://wiki.ubuntuusers.de/alias propose d' autres exemples et un guide pour le configurer.

frlan
la source