본문 바로가기
리눅스

(번역) Working directory

by 다움위키 2024. 12. 30.

원문 보기: https://dawoum.duckdns.org/wiki/Working_directory

 

Original article: w:Working directory

컴퓨팅에서, 프로세스작업 디렉토리는, 어떤거라도 있으면, 계층적 파일 시스템디렉토리이며, 프로세스와 동적으로 연결됩니다. 그것은 때로는 현재 작업 디렉토리 (CWD), 예를 들어, BSD getcwd 함수, 또는 단순히 현재 디렉토리라고도 합니다. 프로세스가 간단한 파일 이름이나 (루트 디렉토리에서 전체 경로로 지정된 파일이 아니라) 상대 경로를 사용하여 파일을 참조할 때, 참조는 프로세스의 작업 디렉토리와 관련하여 해석됩니다. 따라서 예를 들어 작업 디렉토리 /rabbit-shoes를 갖는 프로세스가 foo.txt 파일을 만들도록 요청하면 /rabbit-shoes/foo.txt 파일을 만듭니다.

In operating systems

Further information: cd (command) and operating system shell

대부분의 컴퓨터 파일 시스템에서, 모든 각 디렉토리에는 디렉토리 자체를 가리키는 엔트리 (보통 ".")이 있습니다.

대부분의 DOSUNIX 명령 쉘Microsoft Windows 명령-줄 인터프리터 cmd.exeWindows PowerShell에서, 작업 디렉토리는 CD 또는 CHDIR 명령을 사용하여 변경될 수 있습니다. 유닉스 쉘에서, pwd 명령은 작업 디렉토리의 전체 경로 이름을 출력합니다; DOS와 Windows에서 동등한 명령은 인수 없이 CD 또는 CHDIR입니다 (반면 유닉스에서, 인수 없이 사용된 cd는 사용자를 홈 디렉토리로 데려갑니다).

환경 변수 PWD (유닉스/리눅스 쉘에서), 또는 유사-환경 변수 CD (Windows COMMAND.COMcmd.exe에서, 그러나 OS/2와 DOS에서는 아님), 또는 _CWD, _CWDS, _CWP 및 _CWPS (4DOS, 4OS2, 4NT 등에서)는 스크립트에서 사용될 수 있으므로, 외부 프로그램을 시작할 필요가 없습니다. Microsoft Windows 파일 바로-가기는 작업 디렉토리를 저장할 수 있습니다.

DR-DOS 7.02 이상에서 COMMAND.COM은 종료 줄 바꿈을 생략한 ECHO 명령의 변형, ECHOS를 제공합니다.[4][3] 이것은 나중에 사용하기 위해 CD와 같은 환경 변수에서 작업 디렉토리를 저장하는 임시 일괄 작업을 만들기 위해 사용될 수 있습니다. 예를 들어,

ECHOS SET CD=> SETCD.BAT
CHDIR >> SETCD.BAT
CALL SETCD.BAT
DEL SETCD.BAT

대안적으로, Multiuser DOSDR-DOS 7.02 이상에서, 다양한 내부 명령과 외부 명령은 매개변수 /B ("Batch")를 지원합니다. 이것은 명령의 출력을 직접 명령줄 입력 (배치 파일로 리다이렉션할 때)에 적합해지거나 다른 명령 (또 다른 명령의 입력으로 사용)에 대한 매개변수로 사용하도록 수정됩니다. 여기서 CHDIR이 C:\DOS와 같은 디렉토리 경로를 발행하며, CHDIR /B와 같은 명령은 대신 CHDIR C:\DOS를 발행하므로, CHDIR /B > RETDIR.BAT는 나중에 이 디렉토리로 돌아갈 수 있도록 임시 배치 작업을 생성합니다.

작업 디렉토리는 PROMPT 명령의 $P 토큰으로도 표시됩니다. 깊은 하위 디렉토리 구조 내부에서도 프롬프트를 짧게 유지하기 위해, DR-DOS 7.07 COMMAND.COM은 가장 깊은 하위 디렉토리 수준만 표시하는 $W 토큰을 지원합니다. 따라서, 여기서 기본 PROMPT $P$G가 예를 들어 C:\DOS> 또는 C:\DOS\DRDOS>에서 결과를 내며, PROMPT $N:$W$G는 대신 각각 C:DOS>와 C:DRDOS>를 생성합니다. 비슷한 기능 ($W와 $w 사용)이 4DOS에도 추가되었습니다.

DOS 아래에서 모든 논리 볼륨의 작업 디렉토리의 절대 경로는 현재 디렉토리 구조 (CDS)라는 배열-같은 데이터 구조에 내부적으로 저장되며, 여기서 부팅 시 동적으로 할당되어 모든 논리 드라이브에 필요한 (또는 LASTDRIVE에서 정의한 대로) 개수의 슬롯을 보유합니다. 이 구조는 각 작업 디렉토리의 전체 경로에 66 문자의 길이-제한을 부과하고, 따라서 암묵적으로 하위 디렉토리의 최대 깊이도 제한합니다. DOS Plus와 이전 버전의 DR DOS (DR DOS 6.0까지, 1991년 BDOS 6.7 포함)는 Concurrent DOS- (및 따라서 CP/M-86-)파생된 커널 위의 DOS 에뮬레이션을 사용하여 구현했기 때문에 이러한 제한이 없었으며, 이는 하위 디렉토리를 절대 경로가 아닌 부모 디렉토리에 대한 상대 링크로 내부적으로 구성했습니다. PalmDOS (BDOS 7.0 포함) 및 DR DOS 6.0 (1992년 BDOS 7.1로 업데이트) 이상은 DOS 프로그램과의 최대 호환성을 위해 CDS를 사용하도록 전환했기 때문에, 그것들은 다른 DOS에 존재하는 것과 같은 제한에 직면했습니다.

In programming languages

대부분의 프로그래밍 언어는 프로그램의 작업 디렉토리를 설정(변경)하는 기능을 포함하여 운영 시스템의 파일 시스템 기능에 대한 인터페이스를 제공합니다.

C 언어에서, POSIX 함수 chdir()는 작업 디렉토리를 변경하는 시스템 호출에 영향을 미칩니다. 인수는 절대 경로 또는 이전 디렉토리에 대한 상대 경로인 새 디렉토리로의 경로를 갖는 텍스트 문자열입니다. 여기서 사용 가능하다면, 프로세스에 의해 호출되어 작업 디렉토리를 설정할 수 있습니다.

다른 언어에도 비슷한 함수가 있습니다. 예를 들어, Visual Basic에서, 그것은 보통 CHDIR()로 표기합니다.

Java에서, 작업 디렉토리를 java.nio.file.Path 인터페이스나 java.io.File 클래스를 통해 얻을 수 있습니다. 작업 디렉토리는 변경될 수 없습니다.

See also