Je mets des commandes alias dans mon .bashrc
fichier, afin qu'elles puissent être chargées à chaque fois que j'ouvre une nouvelle fenêtre de terminal. Pourtant cela n'arrive pas.
Je dois sélectionner run script:
dans le terminal> Préférences> " MyDefaultTheme "> prefpane du shell et ajouter:
source .bashrc && clear
pour que cela fonctionne ...
Cela semble étrange puisque de nombreux tutoriels indiquent seulement que vous devez simplement ajouter au .bashrc
fichier et que tout va bien.
Notez que je ne cours pas bash
lorsque j'utilise le terminal, j'aime mieux l'autre (par défaut) (je ne sais pas ce que c'est), car il me montre où je suis tout le temps, par exemple:
>>d54c6b47b:~ romeo$
au lieu de:
>>bash$
En bash tout est chargé comme il se doit.
Ma question est donc la suivante: pourquoi mon .bashrc
fichier n’a-t-il pas été chargé automatiquement et dois-je ajouter l’option pour l’appeler à tout moment?
De plus, un tutoriel m'a dit de faire quelque chose comme:
$alias la=’ls -la’ >> ~/.bashrc
qui devrait écrire l'alias à mon .bashrc
, ça ne marche pas non plus ...
Notez que je suis un novice UNIX, alors soyez gentil.
la source
.bashrc
" mais c'est à peu près tout.csh
(ou une autre variante) mieux. Mais vous devez savoir que le>>bash$
peut être changé :).profile
dans votre répertoire personnelRéponses:
Il suffit de mettre cela dans votre
.profile
fichier à partir de votre répertoire personnel et cela devrait fonctionner la prochaine fois que vous lancerez un nouveau shell ou après avoir exécuté.source ~/.profile
Ce lien indique clairement l’ordre dans lequel les fichiers de démarrage sont lus et chargés par le shell: http://hayne.net/MacDev/Notes/unixFAQ.html#shellStartup
la source
~/.bashrc
. Cependant, la solution ne consiste pas simplement à placer votre.bashrc
contenu dans le fichier de démarrage de la connexion, car ces deux fichiers sont destinés à effectuer différents types de configuration. Au lieu de cela, la configuration canonique pour Bash consiste à avoir votre~/.bash_profile
source~/.bashrc
à un moment approprié du script (généralement le dernier).Été là, fait ça. Ce dont j'ai eu connaissance, OS X ne lit pas le
.bashrc
fichier au démarrage de Bash. Au lieu de cela, il lit les fichiers suivants (dans l'ordre suivant):/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
Voir aussi le commentaire informatif et utile de Chris Johnsen :
Je habituellement juste mettre les choses que je normalement mis dans
~/.bashrc
à~/.profile
- a travaillé jusqu'à présent comme un charme.la source
/usr/bin/login
, ce qui en fait un shell de connexion. Sur toutes les plateformes (pas seulement Mac OS X) bash n'utilise pas.bashrc
pour les shells de connexion (seulement/etc/profile
et la première.bash_profile
,.bash_login
,.profile
qui existe et est lisible). C'est pourquoi «mettresource ~/.bashrc
dans votre.bash_profile
» est un conseil standard.~/.bash_profile
,~/.profile
,~/.bash_login
, jamais tous les eux. Vous pouvez exécuter un test simple en créant les 3 fichiers. Il semble que le terminal bash a la préférence de~/.bash_profile
>~/.bash_login
>~/.profile
. Si quelqu'un d'entre eux existe, ceux de moindre préférence sont ignorés. C’est pourquoi il est parfois recommandé de s’approvisionner également~/.profile
en~/.bash_profile
.Je mets tout dans
~/.bashrc
et justesource ~/.bashrc
dans .profile.Cela permet aux sessions screen et xterm (et je suppose tmux) d'hériter de mon environnement, car seules les sessions sans connexion sont exécutées
.bashrc
, alors que les sessions de connexion (par exemple, terminal ou iTerm) sont uniquement exécutées.profile
.la source
.profile
est commun à plusieurs shells et ne devrait contenir que du code sh compatible POSIX. Si elle est source,.bashrc
elle contient probablement du code spécifique à Bash (l'existence du.bashrc
fichier est spécifique à Bash). Je recommande de renommer votre.profile
en.bash_profile
puisque vous l'utilisez de manière spécifique à Bash. Ou, mettre le code générique.profile
et créer une.bash_profile
que les sources.profile
et.bashrc
.Il y a deux scénarios:
Pour les deux, vous voulez que la source
~/.bashrc
de votre profil soit chargée ou sourcée au démarrage de votre shell pour votre terminal.LINUX
Sous Linux,
~/.profile
la source est automatiquement dans votre shell au démarrage. Donc, si vous allez sur votre terminal et tapezcd ~; ls -A
, vous verrez tous vos fichiers et répertoires dans votre répertoire personnel (/home/usrname/
). Vous devriez voir un fichier appelé.profile
. Ceci est le fichier qui est automatiquement "recherché" lorsque vous démarrez le terminal.Si vous souhaitez ajouter des alias et des fonctions à
~/.bashrc
(ce que je fais), vous devriez alors (à l'intérieur de,~/.profile
ajouter une instruction if qui vérifie s'il~/.bashrc
s'agit d'un fichier non vide, puis le source.Pour vérifier si votre
~/.profile
déjà fait cela entrernano ~/.profile
. Cela l'ouvrira dans un éditeur de texte (vous pouvez utiliser gedit si vous savez que vous l'avez ou même vim si vous savez vous en servir). Vous pouvez obtenir un fichier texte vide (vous ne devriez pas), mais si vous le faites simplement, continuez. Si vous ne voyez pas une ligne nulle part qui ditsource ~/.bashrc
, puis entrez les lignes suivantes quelque part ( le mettre dans un endroit raisonnable comme à la fin ou au début et non pas au milieu d'une instruction if):Ceci vérifie si
~/.bashrc
est un fichier non vide (avec if[ -s ~/.bashrc ]
), et si c'est le cas, il le source. Assez simple. Maintenant, vous pouvez ajouter n'importe quel alias, fonction, variable, etc. valide à~/.bashrc
.MAC OS X
Par défaut, les sources Max OS X
~/.bash_profile
. Pour pouvoir ajouter des éléments à~/.bashrc
(ce qui est, encore une fois, ce que je fais sous OS X également), vous suivez alors la même procédure que linux. Dans le terminal entrezcd ~; nano .bash_profile
. Recherchez une ligne qui ditsource ~/.bashrc
et si ce n'est pas là, ajoutez l'instruction if ci-dessus (if [ -s ~/.bashrc ]; then source ~/.bashrc; fi
).REMARQUES
Lorsque vous écrivez une instruction if, veillez à laisser des espaces entre pratiquement tout (par exemple,
if [ -s ~/.bashrc]; then echo "found"; fi
cela ne fonctionne pas car il n'y a pas d'espace entre~/.bashrc
et]
- l'interprète pensera qu'il s'agit d'un mot).Si vous voulez savoir comment vérifier les éléments dans une instruction if, rendez-vous au terminal et entrez-le
man \[
; cela vous donne essentiellement la fin d'une instruction if. Par exemple,if [ -f /path/to/file ]; then echo "it's a file"; else echo "not a file"; fi
vérifie s'il/path/to/file
s'agit d'un fichier et s'il est imprimé sur stdout en conséquence. Je fais toujours référence à cela aussi pour faciliter la lecture et une référence rapide: 7.2. Opérateurs de test de fichiers .J'espère que ça aide. Je me souviens à quel point j'étais confus au début de tout ça (ce qui n’était pas si tôt) alors, bonne chance dans vos futurs projets UNIX!
la source
.profile
provient uniquement si votre shell est un shell de connexion, sinon il.bashrc
provientLa recherche de .profile dans .bash_profile l'a fait pour moi
la source
.bashrc
votre source.bash_profile
et non de vous.profile
..bash_profile
est spécifique à Bash et devrait utiliser les deux autres sources.J'ai constaté qu'après l'installation de rvm (installateur automatique, aucune modification manuelle), il avait créé un
~/.bash_login
fichier pour lui-même, alors que je n'en avais jamais eu auparavant.Cependant, cela signifie que mes
~/.profile
configurations et mes alias ne sont plus chargés! Beaucoup de raccourcis ont disparu. Je pensais qu'ils fonctionnaient séquentiellement, pas exclusivement: - /J'ai ajouté
d'
~/.bash_login
enchaîner les choses comme je m'y attendais.la source
.profile
est commun à plusieurs shells différents et ne doit contenir que du code sh compatible POSIX..bash_profile
est spécifique à Bash et peut contenir du code spécifique à Bash. En général, si vous utilisez Bash, vous devriez préférer, à.bash_profile
moins que vous ne preniez soin de vous assurer que votre code de démarrage ne contient rien qui dépend de Bash. Quel que soit le programme créé, il l’a.bash_login
probablement fait car il contient du code spécifique à Bash, mais il aurait dû inclure du code à la source.profile
s’il existe.En mettant...
... in
~/.bashrc
, puis la source~/.bashrc
dans mon~/.bash_profile
ne fonctionne pas pour le programme Terminal qui est installé.Mais ensuite, je suis allé dans le menu déroulant Edition> Préférences de profil , onglet Titre et commande , puis j'ai sélectionné Exécuter la commande en tant que shell de connexion dans la section commande de cette page.
Après cela, le démarrage d’un nouveau terminal affiche le résultat souhaité lorsque je tape
c'est-à-dire "rvm est une fonction". Il ne l'a pas fait avant d'avoir apporté ce changement, et c'est le seul changement que j'ai apporté après le
.bash_profile
et les.bashrc
changements décrits dans d'autres réponses ici.la source
Tout d’abord, laissez-moi vous dire que
~/.bashrc
c’est le fichier qui est exécuté chaque fois qu’un deuxième shell est appelé (lors de l’exécution d’un script shell, par exemple) et qui~/.profile
est appelé à chaque connexion.Je vous recommande donc d’écrire une
. ~/.bashrc
commande dans votre~/.profile
fichier, et cette commande exécutera le fichier bashrc à chaque fois que vous vous connecterez.la source
J'ai rencontré le même problème après avoir installé rbenv sur mon serveur distant (Digital Ocean) Ubuntu 16.04.
Il a en quelque sorte créé
~/.bash_profile
. C'est la même chose~/.bashrc
sur un système OS X.Et Ubuntu a commencé à lire uniquement
~/.bash_profile
, mais pas~/.bashrc
comme il se doit.Donc, je viens de sauvegarder mes données
~/.bash_profile
avec ceci:Et renommé l'ancien
~/.bashrc
en~/.bash_profile
Cela a fonctionné pour moi. Après ma connexion SSH, tout est chargé
~/.bashrc
.la source
Au cas où cela pourrait aider quelqu'un d'autre ...
Assurez-vous que vous éditez le bon
.bashrc
fichier pour le bon utilisateur. J'ai eu un problème similaire en utilisant Vagrant. Après avoir exécutévagrant ssh
mon.bashrc
fichier n'était pas en cours d'exécution. La solution était simple en ce sens que je pensais que vagrant se connectait avec l'utilisateur nommé vagrant et que je me connectais en tant qu'un autre utilisateur. Donc, je montais le mauvais.bashrc
fichier. Après avoir édité le.bashrc
fichier correct , mes alias ont été reconnus.la source
Au fait, si vous avez activé ZSH, il remplace bash!
Donc, tous ces
~/.bashrc
fichiers ne sont pas chargés.Vous devez définir vos alias à la
~/.zshrc
place.la source
Pour conserver la connexion de style OSX
.profile
et prendre en charge le comportement bash normal,.bashrc
vous pouvez utiliser un.bashrc
fichier si vous basculez entre nix normal et OSX en fournissant un lien symbolique vers votre.bashrc
fichier appelé.bash_profile
. Assurez-vous simplement que ce fichier n'existe pas avant de l'essayer, mais c'est comme ça que je le fais.la source
.bash_profile
) et d'une initialisation différente à chaque niveau de shell (.bashrc
)./ etc / bashrc est destiné aux profils globaux sur les systèmes mac. Vous pouvez ajouter: alias ls = "ls -G" en haut de ce fichier et votre contenu, tout le monde aura des fichiers et des dossiers colorisés sur le système, de sorte que vous ne devrez rien ajouter de plus pour chaque utilisateur. Vous remarquerez également que "sudo su -" vous permet de conserver des fichiers et des dossiers colorisés sans autre problème.
Autre astuce amusante: lors de l’utilisation de Iterm2 pour mac, l’importation de profils de couleur rendra la coloration des fichiers et des dossiers immédiatement en fonction de votre jeu de couleurs, une fois l’option "/ etc / bashrc" définie.
la source