minishell - 알고리즘과 처리해야할 것들

slee2·2021년 9월 3일
0

42Seoul

목록 보기
8/15
post-thumbnail

main

init_parser

set_node

set_cmd

start_shell

start_redirect

run_cmd

run_exec

파싱( ', " )

환경변수
$USER → slee2
'$USER' → $USER
"$USER" → slee2

| → 파이프
'|' → 명령어
"|" → 명령어
리다이렉션도 동일

echo "cat minishell.c | cat < minishell.c"

파이프 오기전까지 처음 명령어 뒤는 모두 명령어의 인자

"ls" "-al" , 'ls' '-al' 같은 동작

"ls -al" → 하나의 명령어 또는 파일
\ + 특수문자 = 일반문자

환경변수 치환

HOME=a 라면
export HOME=$HOME:/bin$HOME
→ HOME=a:/bina
export HOME=$HOMEa$HOME
→ HOME=a

환경변수를 정할때 클론(:)이 붙으면 뒤 내용을 추가할수 있다.

충격과 공포의 동작

cat < minishell.c cat < minishell_util.c
cat의 인자는 < minishell.c , cat, < minishell_util.c인데 리다이렉션은 cat으로 읽지 않는다.

그냥 띄어쓰기는 넘어가지만 따움표는 못넘어간다

원래 두개의 헤러독이 있으면 헤러독을 두번 실행해야됨 그러니까 밑에 예시를 보면 abc종료 후에 bbb종료까지 해야 커맨드가 실행되는 것을 볼 수 있음 그런데 처음에 aaaaa입력후에 ctrl + c를 누르면 모든 헤러독 그냥 종료됨 그런데 ctrl + d를 누르면 현재 헤러독만 종료된 상태에서 개행이 안되고 바로 옆에 다음 헤러독 실행됨

배쉬의 환경변수 중에 쉘 레벨이라는게 있음(SHLVL). 배쉬를 처음 실행하면 쉘 레벨 2로나옴 그상태에서 또 배쉬를 실행하면 3으로 나옴

exit | exit → 종료안됨

0개의 댓글