Este problema lo tengo desde hace mucho tiempo. Después de ejecutar la terminal .profile, y el archivo .bashrc no funciona (no se ejecutan). ¿Podría indicar dónde debería buscar una fuente de problemas?
comprobar si estos archivos tienen unos permisos adecuados
sí ... tienes razón, la razón fue realmente estúpida: permisos incorrectos chmod + x ~ / .profile y todo funciona bien.
55
@xTrol: Eso no tiene sentido, ~/.profileno requiere permiso de ejecución. (El shell lo obtiene, no lo ejecuta). Intenta chmod -x ~/.profilever si aún funciona.
Keith Thompson el
Respuestas:
40
Tuve un problema similar con mi .profileno ser ejecutado. Resulta (como se explica en esta respuesta de Apple StackExchange ) que si tiene .bash_profileo .bash_loginarchivos, .profilebash lo ignorará.
/etc/profiley ~/.profilese lee para un shell de inicio de sesión interactivo, y
~/.bashrc se lee para un shell interactivo sin inicio de sesión.
Si su otra máquina UNIX lee automáticamente ~/.bashrcincluso para un shell de inicio de sesión interactivo, es porque todo el sistema /etc/
profiletiene una línea que lee ~/.bashrc. El sistema operativo de OS X /etc/profileno tiene uno.
Por lo tanto, si desea ejecutar ~/.bashrcincluso un shell de inicio de sesión interactivo, debe incluir una línea
Y para completar la pieza que falta aquí: un shell de Terminal (de lo que se trataba la pregunta del OP) es por defecto un shell de inicio de sesión interactivo.
LarsH
3
Intente obtenerlos "a mano":
source ~/.profile
y mira lo que pasa. Tenga en cuenta que, como otros han señalado, .profile se obtiene de shells de inicio de sesión, .bashrc de shells de no inicio de sesión; así que prueba uno u otro, no ambos.
El punto clave aquí es el ' -' delante del nombre del shell; eso le dice al shell que se ejecute a través del perfil y cosas relacionadas. Si no ve eso en sus ventanas actuales, es posible que deba manipular la configuración hasta que lo haga.
El panel de configuración en las preferencias del terminal también enumera una opción de shell. Tengo / bin / sh en la mía.
No deberías necesitar esto
Si lo peor llega a ser peor, puedes hacer lo que hice en otros sistemas no cooperativos en el pasado: creé un programa 'loginsh' que podía ejecutar desde Windows, y a su vez ejecutaría mi shell elegido con el ' -' prefijo para decirle que funcione como un shell de inicio de sesión.
#include <string.h>#include <stdlib.h>#include <unistd.h>#include "stderr.h"#include "jlss.h"#ifndef DEFAULT_SHELL#define DEFAULT_SHELL "/bin/sh"#endif /* DEFAULT_SHELL */#ifndef MAX_SHELLBASENAME#define MAX_SHELLBASENAME 256#endif /* MAX_SHELLBASENAME */#ifndef lint
static const char sccs[]="@(#)$Id: loginsh.c,v 4.2 2005/06/22 19:44:07 jleffler Exp $";#endif
int main(int argc, char **argv){
char *shell;
char shellname[MAX_SHELLBASENAME];
err_setarg0(argv[0]);/*Which shell to use?*/if((shell = getenv("SHELL"))==(char *)0)
shell = DEFAULT_SHELL;/*Set up argv[0]in new argument list; reuse old argv space */
shellname[0]='-';
strcpy(&shellname[1], jlss_basename(shell));
argv[0]= shellname;/*Execv must work -- the shell must be an executable program */
execv(shell,&argv[0]);
err_syserr("cannot execute shell %s\n", shell);/* NOTREACHED */return(EXIT_FAILURE);}
(El "stderr.h"encabezado y las err_*rutinas ' ' son un paquete de informe de errores que uso en todas partes. La jlss_basename()función es básicamente la misma que las versiones proporcionadas por el sistema, como las que se encuentran en POSIX <libgen.h>).
Buena información arriba, pero pensé que compartiría algunos detalles sobre el problema que tuve y la solución que encontré.
La necesidad: Agregar un directorio a PATH en OSX 10.8 (ML).
El problema: la orientación es a menudo "modifique el .profile en su directorio de inicio". Un poco confuso ya que, por defecto, este archivo no existe en OSX. Doblemente confuso porque una vez que agrega una declaración de exportación para agregar el nuevo directorio a la RUTA existente ... no funciona. Cubierto arriba.
La solución: agregué la declaración de exportación a mi .bash_profile (también en el directorio de inicio).
Estoy seguro de que hay muchas maneras de pelar a este gato. Este me funcionó. Algo inspirador de confianza: el .bash_profile ya existía y pude ver que otro software instalado (por ejemplo, Ruby) lo había modificado. ¡Si hay una solución mejor, me alegraría saberlo!
~/.profile
no requiere permiso de ejecución. (El shell lo obtiene, no lo ejecuta). Intentachmod -x ~/.profile
ver si aún funciona.Respuestas:
Tuve un problema similar con mi
.profile
no ser ejecutado. Resulta (como se explica en esta respuesta de Apple StackExchange ) que si tiene.bash_profile
o.bash_login
archivos,.profile
bash lo ignorará.fuente
.bash_login
fue agregado después de que lo instalérvm
.Supongo que estas preguntas y respuestas deberían ir a Superuser, pero de todos modos:
De acuerdo con la sección INVOCACIÓN de la página del manual ,
/etc/profile
y~/.profile
se lee para un shell de inicio de sesión interactivo, y~/.bashrc
se lee para un shell interactivo sin inicio de sesión.Si su otra máquina UNIX lee automáticamente
~/.bashrc
incluso para un shell de inicio de sesión interactivo, es porque todo el sistema/etc/ profile
tiene una línea que lee~/.bashrc
. El sistema operativo de OS X/etc/profile
no tiene uno.Por lo tanto, si desea ejecutar
~/.bashrc
incluso un shell de inicio de sesión interactivo, debe incluir una líneaen su
~/.profile
.fuente
Intente obtenerlos "a mano":
y mira lo que pasa. Tenga en cuenta que, como otros han señalado, .profile se obtiene de shells de inicio de sesión, .bashrc de shells de no inicio de sesión; así que prueba uno u otro, no ambos.
fuente
En las preferencias de su terminal, verifique en el panel 'Inicio'. Tienes opciones:
He elegido 'predeterminado' ... si ha elegido el comando personalizado, eso puede ser un factor.
El siguiente punto a verificar es si el shell se inicia como un shell de inicio de sesión. Cuando hago un
ps
listado, veo:El punto clave aquí es el '
-
' delante del nombre del shell; eso le dice al shell que se ejecute a través del perfil y cosas relacionadas. Si no ve eso en sus ventanas actuales, es posible que deba manipular la configuración hasta que lo haga.El panel de configuración en las preferencias del terminal también enumera una opción de shell. Tengo / bin / sh en la mía.
No deberías necesitar esto
Si lo peor llega a ser peor, puedes hacer lo que hice en otros sistemas no cooperativos en el pasado: creé un programa 'loginsh' que podía ejecutar desde Windows, y a su vez ejecutaría mi shell elegido con el '
-
' prefijo para decirle que funcione como un shell de inicio de sesión.(El
"stderr.h"
encabezado y laserr_*
rutinas ' ' son un paquete de informe de errores que uso en todas partes. Lajlss_basename()
función es básicamente la misma que las versiones proporcionadas por el sistema, como las que se encuentran en POSIX<libgen.h>
).fuente
Buena información arriba, pero pensé que compartiría algunos detalles sobre el problema que tuve y la solución que encontré.
La necesidad: Agregar un directorio a PATH en OSX 10.8 (ML).
El problema: la orientación es a menudo "modifique el .profile en su directorio de inicio". Un poco confuso ya que, por defecto, este archivo no existe en OSX. Doblemente confuso porque una vez que agrega una declaración de exportación para agregar el nuevo directorio a la RUTA existente ... no funciona. Cubierto arriba.
La solución: agregué la declaración de exportación a mi .bash_profile (también en el directorio de inicio).
Estoy seguro de que hay muchas maneras de pelar a este gato. Este me funcionó. Algo inspirador de confianza: el .bash_profile ya existía y pude ver que otro software instalado (por ejemplo, Ruby) lo había modificado. ¡Si hay una solución mejor, me alegraría saberlo!
fuente