Terminal tercihlerinizde 'Başlangıç' bölmesine bakın. Seçeneklerin var:
Açık deniz kabukları:
- Varsayılan giriş kabuğu (/ usr / bin / login)
- Komut (tam yol)
Ben 'varsayılan' seçtim ... eğer özel komut seçtiyseniz, bu bir faktör olabilir.
Kontrol edilecek bir sonraki nokta, kabuğun bir giriş kabuğu olarak başlatılıp başlatılmadığıdır. Bir ps
giriş yaptığımda şunu görüyorum:
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
Buradaki kilit nokta -
, kabuk adının önünde ' '; Bu, kabuğa profilden ve ilgili şeylerden geçmesini söyler. Bunu mevcut pencerenizde görmüyorsanız, siz yapıncaya kadar ayarlarla uğraşmanız gerekebilir.
Terminal tercihlerindeki ayarlar bölmesi ayrıca bir kabuk seçeneği de listeler. Benimkinde listelenen / bin / sh var.
Buna ihtiyacın yok
En kötüsü en kötüsüne gelirse, geçmişte diğer kooperatif olmayan sistemlerde yaptığım gibi yapabilirsiniz - pencerelerden çalıştırabileceğim bir 'loginsh' programı hazırladım ve sonra da seçtiğim kabuğumu ' -
' bir giriş kabuğu olarak çalışmasını söylemek için önek.
#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);
}
( "stderr.h"
Üstbilgi ve ' err_*
' yordamları her yerde kullandığım bir hata raporlama paketidir. jlss_basename()
İşlev temelde POSIX'te bulunan sürümlerle sağlanan sistemle aynıdır <libgen.h>
.)