OS X - Créez un répertoire bin personnel (~ / bin) et exécutez des scripts sans spécifier leur chemin complet

19

Donc, ce que j'essaie de faire, c'est de créer un binrépertoire personnel dans mon dossier personnel. J'ai créé le dossier suivant:

/Users/thi/bin

Je mets mes scripts dans ce dossier, mais si je tape dans le terminal:

myScript

Ça ne marche pas.

On m'a dit que je devais exporter ce chemin bin, quelque chose en rapport avec echo $PATH, mais je ne sais pas comment le faire.

Thi G.
la source
voir aussi vers la fin de apple.stackexchange.com/a/98626
nohillside

Réponses:

20

Vous devez ajouter ce qui suit au fichier ~/.profile:

export PATH=/Users/thi/bin:$PATH

alors source ~/.profile

Notez que vous devrez peut-être créer ce fichier et qu'il commence par un, .il peut ne pas être visible dans le Finder pour être modifié via une application comme un éditeur de texte. Pour répertorier tous les fichiers, y compris ceux cachés, utilisez:

ls -la ~/
tfjgeorge
la source
Si j'ajoute export PATH = / Users / thi / bin: $ PATH à mon fichier .bashrc, est-ce que ça va marcher? Est-ce correct?
Thi G.
12
Mieux vaut utiliser $HOME/binau lieu de /Users/thi/bin. Vous pourrez ensuite copier vos paramètres sur une autre machine, où votre nom d'utilisateur est peut-être différent.
lhf
Si je tape dans le terminal: PATH = $ HOME / bin: $ PATH puis tape: export PATH. Va-t-il faire l'affaire?
Thi G.
1
Si vous faites cela, cela modifiera les paramètres maintenant, mais pas lors des futurs démarrages. Pour modifier le chemin d'une manière qui survit aux redémarrages, vous devez inclure ces commandes dans votre .profilefichier.
Daniel
1
Super, merci à tous pour les réponses. J'ai ajouté export PATH=$HOME/bin:$PATHà mon $HOME/.bash_profile.
Thi G.
10

Si vous utilisez bash, ajoutez une ligne comme celle-ci à ~/.bash_profile:

PATH=~/bin:$PATH

PATH est marqué pour l'exportation par défaut, vous n'avez donc pas besoin d'utiliser export .

Si les deux ~/.bash_profileet ~/.profileexistent, bash ne lit que~/.bash_profile lorsqu'il est appelé en tant que shell de connexion interactif. ~/.profileest également utilisé par d'autres shells qui pourraient ne pas comprendre les mêmes options de configuration que bash.

Terminal et iTerm 2 ouvrent de nouveaux shells en tant que shells de connexion par défaut. Lorsque bash est invoqué en tant que shell de connexion interactif, il lit ~/.bash_profilemais pas ~/.bashrc. Les émulateurs de terminaux sur d'autres plates-formes ouvrent souvent de nouveaux shells en tant que shells sans connexion, donc par exemple bash lit ~/.bashrcmais pas ~/.bash_profile. Les utilisateurs d'OS X utilisent souvent ~/.bash_profilecomme fichier de configuration personnel correspondant à ~/.bashrcsur d'autres plates-formes, mais il est également courant de se procurer à ~/.bashrcpartir de ~/.bash_profileou de dire à Terminal ou iTerm 2 d'ouvrir de nouveaux shells en tant que shells sans connexion.

Vous pouvez également modifier le chemin plus globalement dans /etc/pathsou /etc/launchd.conf, mais dans de nombreux contextes, le chemin sera toujours par défaut /usr/bin:/bin:/usr/sbin:/sbin. Et je n'ai vraiment eu besoin que de changer le chemin dans les shells et les éditeurs de texte.

Lri
la source
Super, merci pour la réponse. J'ai ajouté export PATH=$HOME/bin:$PATHà mon $HOME/.bash_profile.
Thi G.
Vous n'avez pas besoin d'exporter , et les deux ~(lorsqu'ils ne sont pas cités) et $HOMEsont développés avant l'affectation de variable à la fois lors de l'utilisation de l'exportation ou d'une affectation simple.
Lri
Lauri Ranta, que préférez-vous personnellement, .bash_profileou .profile? Ou vous en avez un .bashrcdans votre répertoire personnel?
Thi G.
J'avais l'habitude d'utiliser uniquement .bash_profile, mais maintenant j'utilise .bashrc comme mon fichier de configuration principal et mon .bash_profile contient juste . ~/.bashrc. De nouveaux shells sont ouverts en tant que shells sans connexion en mode shell dans emacs et dans tmux. Je n'utiliserais pas .profile comme fichier de configuration principal, car il est également lu par d'autres shells comme ksh.
Lri
3

Vous devez généralement mettre des chemins supplémentaires après $PATHcomme PATH=$PATH:/$HOME/binparce que si vous ne voulez pas remplacer un autre exécutable avec le même nom qui pourrait être /bin, etc.

Nic MacKenzie
la source
4
On pourrait facilement affirmer que vous mettriez $HOME/binau début exactement pour cette raison. Mais l'essentiel est que l'ordre des répertoires en la $PATHmatière et que le shell choisisse la première commande correspondante. Merci de l'avoir signalé.
nohillside