Comment définir de manière persistante des alias dans Terminal

18

Je souhaite ajouter des alias à mon environnement afin qu'ils soient disponibles dans toutes les instances de terminal.

J'ai eu cette réponse :

Oui, vous pouvez le mettre dans votre .bashrc, .bash_profile ou .profile. Sur certains systèmes, les scripts d'initialisation du shell source également .bash_aliases ou .aliases, donc si l'un de ces fichiers existe sur votre système, il peut être judicieux de les utiliser.

Mais je ne trouve aucun de ces fichiers.

(J'ai configuré OS X pour voir les fichiers cachés, et pourtant je ne vois aucun des 4 ci-dessus.)

Elad Benda
la source
Les alias ne fonctionnent que dans le shell (dans Terminal), alors que voulez-vous dire exactement par l'ajout d'alias à votre environnement OS X? Voulez-vous rendre un alias accessible à tous les utilisateurs?
nohillside
Je voulais dire qu'il sera défini pour chaque instance de terminal que j'ouvrirai à l'avenir
Elad Benda
J'ai annulé votre modification, car elle a changé l'orientation de la question. Si vous cherchez toujours une réponse sur la façon d'ajouter des alias à zsh, veuillez poser une nouvelle question.
nohillside

Réponses:

23

Si vous utilisez bash, ajoutez les commandes d'alias à ~ / .bashrc et enregistrez un fichier comme celui-ci sous ~ / .bash_profile:

. ~/.bashrc

Lorsque bash est appelé en tant que shell interactif sans connexion, il lit .bashrc mais pas .bash_profile. Lorsque bash est appelé comme un shell de connexion interactif, il lit .bash_profile mais pas .bashrc.

Terminal et iTerm ouvrent de nouveaux shells en tant que shells de connexion par défaut, de nombreux utilisateurs d'OS X utilisent simplement .bash_profile comme fichier de configuration personnel. Par exemple, tmux et le mode shell dans Emacs ouvrent de nouveaux shells en tant que shells sans connexion.

.profile est également lu par d'autres shells comme ksh. Si à la fois .bash_profile et .profile existent, bash lit uniquement .bash_profile lorsqu'il est appelé en tant que shell de connexion interactif.

Voir https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html pour plus d'informations.

Lri
la source
3
@EladBenda Si vous utilisez zsh, ajoutez les commandes d'alias à ~/.zshrc. ~/.zshrcest lu à la fois par les shells (interactifs) de non-connexion et de connexion, vous n'avez donc pas à vous en procurer ~/.zprofile.
Lri
J'ai toujours voulu savoir la différence entre .bash_profile et .bashrc, maintenant je sais. Merci.
Deesbek
Une meilleure option consiste à conserver les alias dans un fichier appelé ~ / .aliases si vous utilisez oh-my-zsh. Si ce fichier n'existe pas, il peut être ajouté dans le dossier de départ et serait un fichier caché.
Anusha
6

Ouvrez une nouvelle fenêtre de terminal et accédez à votre répertoire personnel (tapez simplement cdet appuyez sur Entrée).

Après cela, tapez ls .bash*et aussi ls .profile(veuillez noter que chacun de ces noms de fichiers commence par un point). Si vous avez ces fichiers (et vous devriez avoir au moins le fichier .profile), vous devez les modifier et y ajouter vos alias. J'utilise VI (ou VIM) pour éditer ces fichiers, mais vous pouvez utiliser un autre éditeur (en fait, taper dans votre fenêtre Terminal open .bash_profilel'ouvrira dans TextEditor, ce qui peut être un peu plus convivial si vous n'êtes pas familier avec VI) . Si, pour une raison quelconque, vous n'avez aucun de ces fichiers, créez-en un nouveau (et appelez-le .bashrc), ajoutez-y vos lignes d'alias (ce sera donc une commande par ligne, comme vous les saisiriez dans le shell), puis enregistrez le fichier. Vous pouvez ensuite créer des liens symboliques vers .bash_profile et .profile à l'aide de ln -s .bashrc .bash_profile; ln -s .bashrc .profile.

Ce que je fais généralement, c'est que je crée des liens symboliques .bashrc et .bash_profile vers .profile et que je n'ai plus qu'à me soucier d'un seul fichier.

La différence entre ces fichiers est que bash en fournira différents selon qu'il a été démarré en tant que shell de connexion (généralement un processus de connexion démarre le shell en tant que shell de connexion) ou simplement en tant que shell interactif (mais pas de connexion), ou un shell non interactif. Le fait d'avoir les trois fichiers essentiellement identiques me donne un environnement cohérent, quelle que soit la façon dont bash a démarré.

Vous obtiendrez plus d'informations en le faisant man bash, mais soyez prêt, c'est une longue page de manuel. Vous pourrez voir lequel des trois fichiers (.bashrc, .profile et .bash_profile) provient selon le mode de démarrage de bash.

J'espère que cela aide - sinon, donnez-moi un cri.

Mike
la source
3

Entrez les commandes suivantes dans le terminal:

cd /etc
sudo vi bashrc

ajoutez ce qui suit comme:

alias ll="ls -lrt"

Redémarrez enfin Terminal.

user172265
la source
2

Si vous avez besoin de cette machine, vous devez regarder dans le /etcdossier. Cependant, ils peuvent ne pas exister par défaut, auquel cas il vous suffit de les créer dans le dossier ci-dessus et de redémarrer le terminal. Vous devrez probablement les utiliser sudopour les créer car le /etcdossier appartient à root.

Si vous en avez besoin pour chaque terminal que vous ouvrez, vous n'avez pas besoin de le faire sur toute la machine. Vous pouvez créer ces fichiers dans votre propre dossier de départ et ils seront lus par le terminal à chaque démarrage d'une session de terminal.

De plus, comme mentionné dans les commentaires, vous ne pourrez généralement les voir qu'en utilisant le terminal et en utilisant ls -lha.

BinaryMisfit
la source
0

si vous avez installé ruby, consultez ce script ruby https://github.com/ytbryan/aka

Le script fournit des fonctionnalités telles que la persistance et l'approvisionnement automatique du fichier dot. Vous pouvez gérer les alias via le terminal sans interrompre votre flux de travail et ouvrir un éditeur de texte.

Avertissement: j'ai écrit ce script et je l'utilise tous les jours. Faites-moi savoir s'il y a un bug / une idée. :)

ytbryan
la source
0

Pour ceux d'entre vous qui recherchent la commande ll comme dans Linux BASH, elle est créée comme ceci ...

alias ll="ls -laF"

Ajoutez cette ligne à votre .bashrcfichier, puis dupliquez le .bashrcfichier en tant que .bash_profile, et vous aurez toujours et pour toujours.

Pour ce que ça vaut, ll sur linux BASH n'est qu'un alias de " ls -laF".

Phillip H. Blanton
la source
-2

j'ai eu le même problème, que je n'avais aucun .bash ou .profile dans mon emplacement Profils. je l'ai finalement trouvé dans / etc

Leo Boulanger
la source
1
/ etc est utilisé à l'échelle du système. Je recommande fortement de ne pas modifier ces fichiers, mais plutôt d'utiliser vos propres fichiers de profil dans votre dossier personnel, par exemple ~ / .bash_profile.
grg
Je n'ai pas l'impression d'avoir un ~ / .bash_profile, c'était la première chose que j'essayais et si j'en crée un, il ne sera pas utilisé même après un redémarrage, je crois que mes administrateurs doivent l'avoir empêché. j'utilise maintenant zsh et le .zshrc fonctionne bien
Leo Boulanger