mandatory


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 는 현재 작업 디렉토리를 변경한다.

curpathcd 알고리즘에서 사용하기 위한 단순한 중간값이며 curpath 가 보여야 한다는 요구사항은 없다.

  1. directory 피연산자가 제공되지 않았고, HOME 환경변수가 비어있거나 정의되지 않은 경우, 기본 동작은 구현 및 정의와 추가동작이 실행되지 않아야 한다.
  2. directory 피연산자가 제공되지 않았고, HOME 환경변수에 값이 존재하는 경우, cd 는 홈 환경에서 이름이 지정된 디렉토리와 같이 동작한다. 변수가 디렉터리 피연산자로 지정되었습니다? ? ??
  3. directory 피연산자가 <slash>로 시작한다면, curpath 를 피연산자로 설정하고 7단계를 진행한다.
  4. directory 피연산자의 첫 번째 구성요소가 . 혹은 .. 이라면 6단계로 이동한다.
  5. .
  6. .
  7. .
  8. .
  9. .
  10. .

위의 단계를 실행할때, 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 로 설정한다.

셸은 적절한 사용을 포함하여 출력을 포맷해야한다. 인용,따라서 다음과 같에ㅣ 셸에 재 ㅣㅇㅂ력하기에 적합하다, 동일한 내보내기 결과를 얻을수 있는 명령이다. (다음은 제외하고 : )

  1. 값이 있는 읽기 전용 변수는 재설정할 수 없다.
  2. 상태가 저장된 시간과 저장된 출력이 셸에 다시 입력되는 시간 사이의 변수에 값이 할당되는 경우 출력될 때 설정되지 않은 변수를 설정되지 않은 상태로 재설정할 필요가 없습니다.

인수가 주어지지 않았다면, 결과는 지정되지 않는다.

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=" 는 VARIABLEunset하는 것과 동일하지 않다. “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 반환 (유틸리티를 찾지 못했을 때) (옵션 실행시)