Cómo crear ~ / .bash_profile y ~ / .profile

25

Entonces, no tengo .bash_profileninguno .profileen mi carpeta de inicio. ¿Cómo los creo? Después de eso, ¿qué debo hacer cada vez que abro el terminal para leer estos archivos?

Thi G.
fuente

Respuestas:

28

Puedes usar el touchcomando.

Por ejemplo,

cd ~

para ir al directorio de inicio.

Ahora crearemos un archivo llamado .bash_profile(el punto significa que estará oculto).

Luego use nanoo vien la Terminal. A menos que sepa lo que vies, solo utilícelo nano. Para abrir estos archivos, usaría:

sudo nano .bash_profile

sudose asegura de que podrá guardar estos archivos. Aquí puedes agregar aliases. nanoo vicreará automáticamente un nuevo archivo si no existe en su directorio actual en Terminal.

Después de que haya terminado, pulse Ctrl+ O, Entery Ctrl+ Xpara guardar y salir. Finalmente, usa

source ~/.bash_profile

para recargar la Terminal y leerá lo que pones en esos archivos.

Por supuesto, también puedes usar ese alias si quieres. :)

Para responder a su pregunta final, estos archivos se leerán automáticamente cada vez que abra la Terminal. Sin embargo, si hay un error (por ejemplo, no coloque espacios entre alias), se lo indicará.

Más información

Como señaló George, .bash_profilesolo se ejecutará en los shells de inicio de sesión. Para shells sin inicio de sesión, deberá crear un .bashrcarchivo con:

    sudo nano .bashrc

Campo de golf

.bash_profile vs .bashrc

Importancia de .bashrc

mismas papas
fuente
55
¿Por qué usas touchpara crear archivos vacíos primero? nanohace esto automáticamente de todos modos.
nohillside
55
Además, probablemente no desee tanto ~ / .profile como ~ / .bash_profile; si bash ve .bash_profile, no molesta con .profile. Finalmente, solo se ejecutará para shells de "inicio de sesión"; los shells que no inician sesión ejecutan ~ / .bashrc Ver preguntas SO anteriores aquí y aquí .
Gordon Davisson el
@GordonDavisson, ¿es bueno tenerlo ~/.profilecomo copia ~/.bash_profile? Y si tienes ambos, ¿qué tienes dentro ~/.profileque no se puede hacer ~/.bash_profile?
Thi G.
2
@ThiG: No quisiera que uno fuera una copia del otro; es probable que agregue algo a uno, olvide agregarlo al otro y se confunda. Vea mis recomendaciones sobre esta pregunta SO para lo que consideraría la mejor práctica.
Gordon Davisson el
sudose asegura de desordenar los derechos de usuario. No hagas eso.
Max Ried
2

Puede copiar esos archivos desde / etc / skel / que son archivos de esqueleto para nuevos usuarios creados por comando como useradd en distribuciones basadas en Debian:

cp -nr /etc/skel/. ~/

Shell cargará automáticamente estos archivos cada vez que inicie sesión. La forma de cargar esos archivos de perfil se describe en la página del manual de Shell. En caso de que use bash shell de manera especial (p. Ej., A través de ssh, ansible, etc.) debe usar el comando 'bash -ilc "que desea ejecutar en ENV preparado por esos archivos de perfil"'. -i significa shell interactivo lo que a menudo requiere .bashrc -l shell de inicio de sesión que hace que se cargue .profile (o existe .bash_profile; consulte la página del manual de bash) que luego carga .bashrc

Juraj Michalak
fuente
0

Prefiero usar editores de texto GUI como BBEdit o TextWrangler. Estos editores de texto pueden manejar archivos invisibles como .profile y .bash_profile y tienen la ventaja de tener una interfaz GUI, a diferencia de nano, que es una interfaz de consola.

TextWrangler

BBEdit

Kaydell
fuente
0

También puede usar un editor de texto GUI como TextEdit:

touch ~/.bash_profile
open -e ~/.bash_profile

open -ees un acceso directo para open -a TextEdit.

No necesariamente tiene que crear .profile o .bashrc. Terminal e iTerm 2 abren nuevos shells como shells de inicio de sesión, por lo que bash no lee .bashrc. Si existen .bash_profile y .profile, bash solo lee .bash_profile cuando se invoca como un shell de inicio de sesión interactivo. ksh lee el .profile cuando se invoca como un shell de inicio de sesión interactivo y por bash cuando se invoca como sh como un shell de inicio de sesión interactivo.

De hecho, le he dicho a iTerm 2 que abra nuevas shells como shells que no son de inicio de sesión, y mi .bash_profile solo contiene una línea como . ~/.bashrc. tmux y el modo de shell en emacs abren nuevos shells como shells sin inicio de sesión de forma predeterminada. .bash_profile todavía se lee cuando ssh a mi computadora.

Lri
fuente
Déjame ver si tengo eso ... ¿Tienes ambos ~/.bash_profiley ~/.profile? ¿Y tú también tienes ~/.bashrc?
Thi G.
No tengo un .profile, y mi .bash_profile solo contiene . ~/.bashrc.
Lri