mandatory
It must implement the builtins:
다음의 내장 기능을 실행할 수 있어야 합니다:
*echo
with option n
*
n
옵션을 사용할 수 있는 echo
*cd
with only a relative or absolute path*
오직 상대 또는 절대경로만 사용하는 cd
*pwd
with no options*
옵션이 없는 pwd
*export
with no options*
옵션이 없는 export
*unset
with no options*
옵션이 없는 unset
*env
with no options or arguments*
옵션이나 인자값이 없는 env
*exit
with no options*
옵션이 없는 exit
echo
옵션 구현 -n
name : echo -- write arguments to the standard output
synopsis : echo [-n] [string ...]
description :
echo는 피연산자를 공백으로 구분하며, 피연산자 끝에 줄바꿈(’\n’)을 붙여 stdout으로 출력한다.
옵션 -n : 개행(’\n’) 없이 출력
Do not print the trailing newline character. This may also be achieved by appending `\c' to the end of the string, as is done by iBCS2 compatible systems
‘\c’ : ‘\c’ 이후에 오는 문자열 무시 ( 개행문자도 무시함 )
exit status
: 성공시 0
반환
에러 시 >0
(양수) 반환
cd
옵션 구현x
name : cd — change the working directory
synopsis : cd **[**-L|-P**] [***directory***]**
description :
cd
는 현재 작업 디렉토리를 변경한다.
curpath
는 cd
알고리즘에서 사용하기 위한 단순한 중간값이며 curpath
가 보여야 한다는 요구사항은 없다.
directory
피연산자가 제공되지 않았고, HOME
환경변수가 비어있거나 정의되지 않은 경우, 기본 동작은 구현 및 정의와 추가동작이 실행되지 않아야 한다.directory
피연산자가 제공되지 않았고, HOME
환경변수에 값이 존재하는 경우, cd
는 홈 환경에서 이름이 지정된 디렉토리와 같이 동작한다. 변수가 디렉터리 피연산자로 지정되었습니다? ? ??directory
피연산자가 <slash>로 시작한다면, curpath
를 피연산자로 설정하고 7단계를 진행한다.directory
피연산자의 첫 번째 구성요소가 .
혹은 ..
이라면 6단계로 이동한다.위의 단계를 실행할때, PWD
환경변수가 설정 되었다면, OLDPWD
환경변수 또한 이전 작업 디렉토리로 설정되어야 한다 (즉 cd
호출 하기 전의 디렉토리)
stderr
stdout
environment variables
: cd
의 실행으로 아래의 환경변수에 영향을 줄 수 있다.
CDPATH, HOME, LANG, LC_ALL, LC_CTYPE< LC_MESSAGES, NLSPATH, OLDPWD, PWD
exit status
: 성공시 0
반환
에러 시 >0
(양수) 반환
pwd
옵션 구현x
name : pwd -- return working directory name
synopsis : pwd [-L | -P]
description :
pwd
는 현재 작업중인 diretory의 절대 경로를 표준출력으로 출력한다.
옵션을 지정하지 않으면 -L 옵션이 가정된다.
-L
: 논리적 현재 작업 디렉토리를 표시한다.
environmnet
: PWD
: 논리적 현재 작업 디렉토리
exit status
: 성공시 0
반환
에러 시 >0
(양수) 반환1
export
옵션 구현x
name : export — set the export attribute for variables
synopsis : export name[=word]...
export -p
description :
지정된 이름에 해당하는 변수에 export
속성을 부여해야 하며, 후에 지속적으로 실행되는 명령환경에 해당 변수가 있도록 해야한다.
변수 이름 뒤에 =word
가 붙으면 해당 변수의 값을 word
로 설정한다.
셸은 적절한 사용을 포함하여 출력을 포맷해야한다. 인용,따라서 다음과 같에ㅣ 셸에 재 ㅣㅇㅂ력하기에 적합하다, 동일한 내보내기 결과를 얻을수 있는 명령이다. (다음은 제외하고 : )
인수가 주어지지 않았다면, 결과는 지정되지 않는다.
exit status
: 성공시 0
반환
에러 시 >0
(양수) 반환 (하나 이상의 이름을 내보낼 수 없거나, -p 옵션이 지정되고 에러가 발생하였을때)
추가 사항
(((이건 executor에서 구조적으로 해결해야할 문제여서 개별 구현 )))
zsh> export SING=singing | export SONG=songg | export MUSIC=mussssic
zsh에서 실행시 ⇒ 마지막 export 명령만 적용된다. (앞의 SING, SONG 환경변수는 만들어지지 않고 MUSIC 환경변수만 생성된다)
bash 에서는 아무것도 적용되지 않는다. 다른 명령어와 pipe로 이어져 있을때 적용되지 않는다. 단일 명령어로 쓰일때만 적용된다. (unset, exit 도 마찬가지)(exit도,,기타 등등도? 적용되는지 확인해보기 )
→ 명령어 단일 실행시(파이프 없이) main 프로세스에서 실행되어 main프로세스의 환경변수에 적용이된다고 보는게 맞는 것 같다. 파이프가 있이 여러 명령어를 같이 실행시 자식프로세스를 생성하여 실행되어 메인프로세스의 환경변수에 적용이 되지 않는다.
unset
옵션 구현x
name : unset — unset values and attributes of variables and functions
synopsis : unset **[**-fv**]** *name*...
description :
name
으로 각각 지정된 변수나 함수는 unset 된다.
이전에 설정하지 않은 변수나 함수의 설정을 해제하는 것은 오류로 간주되지 않으며 셸이 중단되는 원인이 되지 않습니다.
“VARIABLE=
" 는 VARIABLE
을 unset
하는 것과 동일하지 않다. “VARIABLE=
"는 “”으로 설정된다. 또한 설정 해제될 수 있는 변수를 특수 매개변수(special parameters)를 포함하도록 잘못 해석해서는 안된다.
exit status
: 성공시 0
반환
에러 시 >0
(양수) 반환 (한개 이상의 name
이 unset 될 수 없을때)
env
옵션 구현x, 인자값 구현x
name : env -- set environment and execute command, or print environment
synopsis : env [-iv] [-P altpath] [-S string] [-u name] [name=value ...][utility [argument ...]]
description :
env 유틸리티는 명령줄에 지정된 대로 환경을 수정한 후 다른 유틸리티를 실행합니다. 각 name=value 옵션은 환경 변수 이름 설정을 값 값으로 지정합니다. 이러한 모든 환경 변수는 유틸리티가 실행되기 전에 설정됩니다.
유틸리티를 지정하지 않으면 env는 환경 내 변수의 이름과 값을 한 줄당 하나의 이름/값 쌍으로 출력합니다
exit status
: 성공시 0
반환
에러 시 >0
(양수) 반환
126
반환 (유틸리티를 찾았지만 실행할 수 없을 때) (옵션 실행시)
127
반환 (유틸리티를 찾지 못했을 때) (옵션 실행시)
exit