CrownyOS 셸측 터미널 승격 — 앱_터미널.한선 실셸화
개요
CrownyOS 데스크톱 셸(하늘나라셸.한선)에 n==3으로 배선된
libs/앱_터미널.한선을
스텁 명령 처리(help/4phase/ver/clear 4종 하드코딩)에서
실제 체계() 셸 실행으로 승격.
셸 계약 5함수(터미널_시작/그리기/클릭/키/틱) 시그니처는 절대 불변 유지.
무엇을 했는지
- cd 경로 추적:
터미널_경로 전역변수로 CWD 유지. cd <dir> 입력 시
(cd <현재경로> && cd <대상> && pwd)를 체계()로 실행 → 결과가
/로 시작하면
경로 갱신, 아니면 실패 메시지. 초기값은
/Users/ef(터미널_홈경로).
- 실셸 명령 실행: 그 외 모든 명령은
cd <터미널_경로> && (<cmd>) > /tmp/OS터미널출력.txt 2>&1 형태로 체계() 실행
→ 읽기()로 결과 로드 → 줄 단위 분해(최대 200줄, 초과 시 생략 안내) →
화면 출력 버퍼(터미널_출력목록)에 append.
- 위험 명령 차단:
rm -rf, sudo, mkfs, dd if=, shutdown, reboot,
fork bomb(
:(){),
chmod -R 777,
> /dev/,
kill -9 1,
diskutil erase,
| sh/
| bash 파이프 등 포함하나() 기반 차단 목록.
- 내장 명령 확장:
pwd, cd(기존 help/4phase/ver/clear 유지) +
한글 별칭
도움(help)/
지우기(clear) 추가 (
또는 연산자로 병합).
- 크라우니 상주뇌 질의:
크라우니 <질문> 입력 시 질의를 /tmp/OS터미널질의.txt에
쓰기() 후
curl -sG -m 3 --data-urlencode q@<파일> http://127.0.0.1:9977/q
실행, 응답을
[크라우니] <응답> 형식으로 출력. 미기동(connection refused/failed
to connect) 시 안내 메시지.
- 출력 버퍼 캡 관리: 배열 1023 캡 함정 회피 위해
터미널_출력목록이
300줄 초과 시 최근 200줄만 유지하는 트리밍 헬퍼(
터미널_출력다듬기) 추가.
- 엣지케이스 수정: 공백만 있는 입력(스페이스+Enter)이
cmd=="" 가드를
빠져나가
( ) 형태의 빈 서브셸 체계() 호출 → sh 문법오류를 일으키던 버그를
터미널_명령처리 진입 시
터미널_트림()으로 선제 트리밍해 수정.
검증 (실측)
- 단독 컴파일:
hanseonc_high libs/앱_터미널.한선 → exit 0, 7846 큐브
- 전체 셸 컴파일:
hanseonc_high 하늘나라셸.한선 → exit 0, 14033 토큰 / 24866 큐브
(기존 규모 12932토큰 대비 확장, 정상 통합)
GUI 없는 최소 하네스(/tmp/터미널하네스.한선)로 터미널_키/터미널_틱 직접 구동:
ls /tmp → 실제 파일 목록이 출력 버퍼에 포함됨 확인 (200줄 캡 정상 동작)
pwd → /Users/ef (초기 경로)
cd /tmp 후 pwd → /tmp (경로 추적 확인)
rm -rf / → "차단됨: 위험 명령으로 판단되어 실행하지 않습니다." (실행 안 됨 확인)
공백만 입력 → 문법오류 없이 정상 처리 (수정 후 재검증)
도움(한글 help) → 확장 도움말 출력 확인
크라우니 한선씨란 (입력줄 직접주입으로 디스패치 검증 — 사유는 아래 잔여이슈) →
실제 상주뇌(:9977) 응답
[크라우니] MISS|AAO 수신 확인
관련 파일
/Users/ef/CrownyOS/crownyc/libs/앱_터미널.한선 (수정)
/tmp/앱_터미널.백업.한선 (원본 백업, 179줄)
/tmp/터미널하네스.한선 (검증용 하네스, 임시)
- 하늘나라셸.한선(
/Users/ef/CrownyOS/crownyc/하늘나라셸.한선) — 컴파일 검증만, 수정 없음
잔여 이슈
- 한글 명령 실제 키보드 입력 불가:
터미널_키(코드)는 (이 앱뿐 아니라
앱_티옴타.한선 등 CrownyOS 전 앱 공통 설계로) ASCII 32~126 코드만 받는다.
Cocoa 윈도우 키 이벤트 파이프라인 자체가 한글 IME를 지원하지 않아, 사용자가
실제 키보드로
도움/
크라우니 <질문> 같은 한글 명령을 입력할 방법이 현재
없음(코드값이 126 초과라 전부 무시됨). 이번 작업은 명령 디스패치 로직만
구현(하네스에서
터미널_입력줄 직접 주입으로 검증), 실제 키보드로 타이핑
가능하게 하려면 크라우니OS 윈도우 레이어(crownyc_window.m)에 한글 IME/유니코드
키 이벤트 배선이 별도로 필요함 — 이 작업 범위 밖(하늘나라셸.한선 무수정 지시).
영문 명령(
help,
clear,
cd,
pwd, 일반 bash 명령)은 실제 키보드로 정상 입력 가능.
- 위험 명령 차단 목록은 화이트리스트가 아닌 블랙리스트 방식이라 완전하지 않음
(신규 위험 패턴 발견 시
터미널_위험한가()에 추가 필요).
읽기() 64KB 캡·체계() stdout 8191B 캡(단 본 구현은 파일 redirect 경유라
이 캡은 우회, 다만 읽기() 자체의 64KB 캡은 대용량 명령 출력 시 여전히 적용).