Pongo algunos comandos de alias en mi .bashrc
archivo, para que puedan cargarse cada vez que abro una nueva ventana de Terminal. Sin embargo, esto no sucede.
Tengo que seleccionar run script:
en la Terminal> Preferencias> " MyDefaultTheme "> Shell prefpane y agregar:
source .bashrc && clear
para que funcione ...
Esto parece extraño ya que muchos tutoriales solo dicen que solo tiene que agregar al .bashrc
archivo y todo está bien.
Tenga en cuenta que no ejecuto bash
cuando uso el terminal, me gusta el otro (predeterminado) (no sé qué es) mejor, porque me muestra dónde estoy todo el tiempo, por ejemplo:
>>d54c6b47b:~ romeo$
en vez de:
>>bash$
En bash todo se carga como debería ser.
Entonces mi pregunta es, ¿por qué mi .bashrc
archivo no se cargó automáticamente y tuve que agregar la opción para llamarlo cada vez?
También un tutorial me dijo que hiciera algo como:
$alias la=’ls -la’ >> ~/.bashrc
que debería escribir el alias a mi .bashrc
, esto tampoco funciona ...
Tenga en cuenta que soy un novato de UNIX, así que sea gentil.
fuente
.bashrc
" pero eso es todo.csh
(u otra variante) mejor. Pero debes saber que>>bash$
se puede cambiar :).profile
en su directorio personalRespuestas:
Simplemente colóquelo en su
.profile
archivo desde su directorio de inicio y debería funcionar la próxima vez que inicie un nuevo shell o después de ejecutarsource ~/.profile
Este enlace establece claramente el orden en que el shell lee y carga los archivos de inicio: http://hayne.net/MacDev/Notes/unixFAQ.html#shellStartup
fuente
~/.bashrc
. Sin embargo, la solución no es simplemente colocar su.bashrc
contenido en el archivo de inicio de sesión, porque estos dos archivos están destinados a realizar diferentes tipos de configuración. En cambio, la configuración canónica para Bash es tener su~/.bash_profile
fuente~/.bashrc
en algún punto apropiado del script (generalmente el último).He estado allí, hecho eso. De lo que me di cuenta, OS X no lee el
.bashrc
archivo al inicio de bash. En su lugar, lee los siguientes archivos (en el siguiente orden):/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
Vea también el comentario informativo y útil de Chris Johnsen :
Yo por lo general sólo hay que poner las cosas que normalmente pondría en
~/.bashrc
a~/.profile
- ha funcionado hasta ahora como un encanto.fuente
/usr/bin/login
, lo que hace que el shell sea un shell de inicio de sesión. En cada plataforma (no sólo Mac OS X) fiesta no utiliza.bashrc
para shells de entrada (única/etc/profile
y la primera de.bash_profile
,.bash_login
,.profile
que existe y es legible). Es por eso que "ponersource ~/.bashrc
en su.bash_profile
" es un consejo estándar.~/.bash_profile
,~/.profile
,~/.bash_login
, no todos los ellos. Puede ejecutar una prueba simple creando los 3 archivos. Parece que el terminal de fiesta tiene la preferencia de los~/.bash_profile
>~/.bash_login
>~/.profile
. Si alguno de ellos existe, se omiten los de menor preferencia. Por eso a veces se recomienda también la fuente~/.profile
de~/.bash_profile
.Puse todo en
~/.bashrc
y solosource ~/.bashrc
en .profile.Esto permite que las sesiones de pantalla y xterm (y supongo que tmux) hereden mi entorno ya que las sesiones sin inicio de sesión solo se ejecutan
.bashrc
, mientras que las sesiones de inicio de sesión (por ejemplo, terminal o iTerm) solo se ejecutan.profile
.fuente
.profile
es común a varios shells y solo debe contener un código sh compatible con POSIX. Si lo fuente.bashrc
, posiblemente contenga código específico de Bash (la existencia del.bashrc
archivo es específica de Bash). Recomiendo cambiarle el nombre.profile
a.bash_profile
ya que lo está utilizando de una manera específica de Bash. O, ingrese un código genérico.profile
y cree un código.bash_profile
fuente.profile
y.bashrc
.Hay dos escenarios:
Para ambos, desea obtener
~/.bashrc
en su perfil que se carga o obtiene cuando se inicia el shell de su terminal.LINUX
En Linux,
~/.profile
se fuente automáticamente en su shell cuando se inicia. Entonces, si va a su terminal y escribecd ~; ls -A
, verá todos sus archivos y directorios en su directorio de inicio (/home/usrname/
). Deberías ver un archivo llamado.profile
. Este es el archivo que se "origina" automáticamente cuando inicia el terminal.Si desea agregar alias y funciones a
~/.bashrc
(que es lo que hago), entonces debe (dentro de~/.profile
agregar una instrucción if que verifique si~/.bashrc
es un archivo no vacío y luego lo fuente.Para verificar si
~/.profile
ya lo hace, ingresenano ~/.profile
. Esto lo abrirá en un editor de texto (puede usar gedit si sabe que lo tiene o incluso vim si sabe cómo usarlo). Puede obtener un archivo de texto vacío (no debería), pero si lo hace, simplemente continúe. Si no ve una línea en ninguna parte que digasource ~/.bashrc
, ingrese las siguientes líneas en algún lugar (colóquelo en un lugar razonable como al final o al principio y no en el medio de una instrucción if):Esto comprueba si
~/.bashrc
es un archivo no vacío (con if[ -s ~/.bashrc ]
), y si es así, lo obtiene. Bastante simple. Ahora, puede agregar cualquier alias válido, función, variable, etc. a~/.bashrc
.MAC OS X
Por defecto, las fuentes Max OS X
~/.bash_profile
. Para poder agregar cosas a~/.bashrc
(que es, de nuevo, lo que hago también en OS X), entonces sigue el mismo procedimiento que Linux. En la terminal ingresecd ~; nano .bash_profile
. Verifique si hay una línea que digasource ~/.bashrc
y si no está allí agregue la instrucción if anterior (if [ -s ~/.bashrc ]; then source ~/.bashrc; fi
).NOTAS
Al escribir una declaración if, asegúrese de dejar espacios entre básicamente todo (por ejemplo
if [ -s ~/.bashrc]; then echo "found"; fi
, no funciona porque no hay espacio entre ellos~/.bashrc
y]
el intérprete pensará que esta es una palabra).Si desea descubrir cómo verificar mejor las cosas en una declaración if, vaya a la terminal e ingrese
man \[
; esto esencialmente le da el desglose de una declaración if. Por ejemplo,if [ -f /path/to/file ]; then echo "it's a file"; else echo "not a file"; fi
comprueba si/path/to/file
es un archivo y si se imprime en stdout en consecuencia. Siempre hago referencia a esto también para una referencia más fácil a los ojos y rápida: 7.2. Operadores de prueba de archivos .Espero que esto ayude. Recuerdo lo confundido que estaba cuando comencé todo esto (que no fue hace mucho tiempo); así que, ¡buena suerte con tus futuros esfuerzos de UNIX!
fuente
.profile
solo se obtiene si su shell es un shell de inicio de sesión, de lo contrario.bashrc
se obtieneSourcing .profile en .bash_profile lo hizo por mí
fuente
.bashrc
su fuente.bash_profile
y no la suya.profile
..bash_profile
es específico de Bash y debería generar los otros dos.Descubrí que después de instalar rvm (autoinstalador, sin modificaciones manuales) había creado un
~/.bash_login
archivo para sí mismo, donde anteriormente nunca tuve uno.Sin embargo, esto significa que mis
~/.profile
configuraciones y alias ya no se cargaron. Muchos atajos desaparecieron. Pensé que corrían secuencialmente, no exclusivamente: - /yo añadí
para
~/.bash_login
encadenar las cosas como esperaba.fuente
.profile
es común a varios shells diferentes y solo debe contener código sh compatible con POSIX..bash_profile
es específico de Bash y puede contener código específico de Bash. En general, si está usando Bash, debería preferir a.bash_profile
menos que tenga cuidado de asegurarse de que su código de inicio no contenga nada que dependa de Bash. Cualquier programa creado.bash_login
probablemente lo hizo porque contiene código específico de Bash, pero debería haber incluido el código fuente.profile
si existe.Poniendo...
... en
~/.bashrc
, y luego la fuente~/.bashrc
en mi~/.bash_profile
no funcionó para el programa Terminal que viene instalado.Pero luego fui al menú desplegable Editar> Preferencias de perfil , Título y pestaña Comando , y seleccioné Ejecutar comando como un shell de inicio de sesión en la sección de comandos de esa página.
Después de hacerlo, iniciar un nuevo terminal muestra el resultado deseado cuando escribo
es decir, "rvm es una función". Que no lo hizo hasta que hice este cambio, y es el único cambio que hice después de las
.bash_profile
y.bashrc
los cambios que se describen en otras respuestas aquí.fuente
En primer lugar, permítame decirle que ese
~/.bashrc
es el archivo que se ejecuta cada vez que se llama a un segundo shell (cuando se ejecuta un script de shell, por ejemplo), y~/.profile
se llama en cada inicio de sesión.Por lo tanto, le recomiendo que escriba el
. ~/.bashrc
comando en su~/.profile
archivo, y este comando ejecutará el archivo bashrc cada vez que inicie sesión.fuente
Me encontré con el mismo problema después de instalar rbenv en mi servidor remoto (Digital Ocean) Ubuntu 16.04.
De alguna manera se creó
~/.bash_profile
. Es lo mismo~/.bashrc
en un sistema OS X.Y Ubuntu comenzó a leer solo
~/.bash_profile
, pero no~/.bashrc
como debería.Así que solo hice una copia de seguridad de mis datos
~/.bash_profile
con esto:Y renombró el viejo
~/.bashrc
a~/.bash_profile
Funcionó para mi. Después de mi inicio de sesión ssh tengo todo cargado
~/.bashrc
.fuente
En caso de que esto pueda ayudar a alguien más ...
Asegúrese de editar el
.bashrc
archivo correcto para el usuario correcto. Tuve un problema similar al usar Vagrant. Después de ejecutarvagrant ssh
mi.bashrc
archivo no se estaba ejecutando. La solución fue simple porque pensé que vagabundo estaba iniciando sesión con el usuario llamado vagabundo, y en realidad estaba iniciando sesión como otro usuario. Entonces estaba editando el.bashrc
archivo incorrecto . Después de editar el.bashrc
archivo correcto, se reconocieron mis alias.fuente
Por cierto, si has activado ZSH, ¡reemplaza bash!
Entonces, todos esos
~/.bashrc
archivos no se cargan.En su
~/.zshrc
lugar, debe establecer sus alias .fuente
Para seguir con el inicio de sesión de estilo OSX
.profile
y admitir el comportamiento bash normal.bashrc
, puede usar un.bashrc
archivo si cambia entre nix normal y OSX proporcionando un enlace simbólico a su.bashrc
archivo llamado.bash_profile
. Solo asegúrate de que este archivo no exista antes de intentarlo, pero así es como lo hago.fuente
.bash_profile
) y una inicialización diferente en cada nivel de shell (.bashrc
)./ etc / bashrc es para perfiles globales en sistemas mac. Puede agregar: alias ls = "ls -G" en la parte superior de este archivo y, bueno, todos tendrán archivos y carpetas coloreados en el sistema, por lo que no tendrá que configurar nada adicional para cada usuario individual. También notará, junto con "sudo su -" para rootear de usted mismo, todavía tendrá archivos y carpetas coloreados sin dolores de cabeza adicionales.
Otro consejo divertido: al usar el Iterm2 de mac, la importación de perfiles de color generará el color de los archivos y carpetas inmediatamente de acuerdo con su esquema de color después de tener esta opción "/ etc / bashrc" establecida.
fuente