En las preferencias de su terminal, verifique en el panel 'Inicio'. Tienes opciones:
Los depósitos se abren con:
- Shell de inicio de sesión predeterminado (/ usr / bin / login)
- Comando (ruta completa)
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:
PID TTY TIME CMD
24088 ttys000 0:00.03 -sh
24614 ttys001 0:00.03 -sh
25127 ttys002 0:00.05 -sh
35544 ttys003 0:00.08 -sh
40926 ttys004 0:00.03 -sh
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>
).