Nas preferências do seu terminal, verifique no painel 'Inicialização'. Você tem opções:
Os reservatórios abrem com:
- Shell de login padrão (/ usr / bin / login)
- Comando (caminho completo)
Eu escolhi o 'padrão' ... se você escolher o comando personalizado, isso pode ser um fator.
O próximo ponto a verificar é se o shell foi iniciado como um shell de logon. Quando faço uma ps
listagem, vejo:
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
O ponto chave aqui é o ' -
' na frente do nome do shell; que diz ao shell para percorrer o perfil e coisas relacionadas. Se você não vê isso nas janelas atuais, pode precisar se preocupar com as configurações até conseguir.
O painel de configurações nas preferências do terminal também lista uma opção de shell. Eu tenho / bin / sh listado no meu.
Você não deveria precisar disso
Se o pior acontecer, você pode fazer o que eu fiz em outros sistemas não cooperativos no passado - eu criei um programa 'loginsh' que eu poderia executar no Windows e, por sua vez, executaria meu shell escolhido com o ' -
' prefixo para dizer que funcione como um shell de login.
#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);
}
(O "stderr.h"
cabeçalho e as err_*
rotinas ' ' são um pacote de relatório de erros que eu uso em todos os lugares. A jlss_basename()
função é basicamente a mesma que as versões fornecidas pelo sistema, como as encontradas no POSIX <libgen.h>
.)