ในการตั้งค่าเทอร์มินัลของคุณให้ตรวจสอบในบานหน้าต่าง 'เริ่มต้น' คุณมีตัวเลือก:
หอยเปิดด้วย:
- เชลล์ล็อกอินเริ่มต้น (/ usr / bin / ล็อกอิน)
- คำสั่ง (เส้นทางที่สมบูรณ์)
ฉันเลือก 'ค่าเริ่มต้น' ... หากคุณเลือกคำสั่งกำหนดเองอาจเป็นปัจจัย
จุดต่อไปที่จะตรวจสอบว่าเชลล์เริ่มต้นเป็นเชลล์ล็อกอินหรือไม่ เมื่อฉันทำps
รายการฉันเห็น:
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
จุดสำคัญที่นี่คือ ' -
' ด้านหน้าชื่อเชลล์ ที่บอกให้เชลล์ทำงานผ่านโปรไฟล์และเนื้อหาที่เกี่ยวข้อง หากคุณไม่เห็นสิ่งนี้ในหน้าต่างปัจจุบันของคุณคุณอาจต้องทำการตั้งค่าจนกว่าคุณจะทำ
บานหน้าต่างการตั้งค่าในการตั้งค่าเครื่องยังแสดงรายการตัวเลือกเชลล์ ฉันมี / bin / sh อยู่ในรายการแล้ว
คุณไม่ควรต้องการสิ่งนี้
หากที่เลวร้ายที่สุดมาถึงที่เลวร้ายที่สุดที่คุณสามารถทำตามที่ฉันทำในบางระบบความร่วมมืออื่น ๆ ในช่วงเวลาที่ผ่านมา - ฉันสร้างโปรแกรมที่ 'loginsh' ที่ฉันสามารถเรียกใช้จากหน้าต่างและมันจะเปิดดำเนินการเปลือกได้รับการแต่งตั้งของฉันกับ ' -
' คำนำหน้าเพื่อบอกให้ทำงานเป็นเชลล์การเข้าสู่ระบบ
#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"
ส่วนหัวและรูทีน ' err_*
' เป็นชุดรายงานข้อผิดพลาดที่ฉันใช้ทุกที่jlss_basename()
โดยทั่วไปฟังก์ชั่นจะเหมือนกับระบบที่ให้รุ่นเช่นที่พบใน POSIX <libgen.h>
)