bash\_profile은 무엇이며 그 용도는 무엇입니까?


최상의 답변

A2A에 감사드립니다.

Anmol Vishwakarma가 중요합니다.

우리가 사물을 원근감있게 파악해야합니다.

  • / etc / profile, ~ / .bash\_rc , ~ / .bash\_profile 은 모두 파일이며 c 구성 스크립트라고합니다. 변수 선언, 내보내기 변수, 메일 또는 뉴스 확인과 같은 로그인시 실행되는 명령, umask 설정 등을 포함 할 수 있습니다. 사용자가하는 일반적인 작업은 $ PATH에 디렉터리 추가, 변수 내보내기, $ PS1 변경, 표시 색상 설정, 인사말 문자 메시지 추가 등입니다.
  • / etc / profile 은 선행 점으로 표시되는 것처럼 기본적으로 숨겨져 있으므로 bash\_profile 이 아니라 실제로는 .bash\_profile )입니다.
  • 로그인 할 때 (로컬 또는 원격으로) 로그인 쉘이라고하며 약간 처리됩니다. 일반적인 쉘 호출과 약간 다릅니다. 이 경우 / etc / profile 파일 (있는 경우)이 실행되고 그 후에 ~ /.bash\_profile 또는 ~ / .bashrc 파일이 순서대로 실행됩니다.
  • 대화 형 쉘의 경우, 즉 셸의 stdin stderr 가 모두

    TTY, ~ / .bash\_profile 파일은 실행되지 않지만 ~ / .bashrc is.

  • 비대화 형 셸의 경우, 즉 stdin / stderr 중 하나 또는 둘 모두가있는 쉘은 TTY가 아니므로 구성 스크립트가 실행되지 않습니다. .
  • 로그인 셸에서 로그 아웃시 ~ / .bash\_logout 파일 (있는 경우)이 실행됩니다.
  • POSIX에 따라 stderr ( stdout 아님) 셸이 대화 형인지 확인하는 스트림입니다. stderr 가 리디렉션되는 경우 -i 가 지정되지 않는 한 대화 형 셸이 아닙니다. 쉘 호출. stdout 은 동일한 효과가 없습니다.

답변

그건 내 의견이지만 (현재 셸 프로세스를 종료하는) 쉘 함수의 컨텍스트에서 exitreturn ( 현재 함수), 함수 본문의 코드에 의해 치명적인 조건이 감지되면 현재 스크립트를 종료하는 셸 함수에 코드를 작성할 수 없습니다. 보다 구조화 된 프로그래밍 언어에서 런타임 assert() (또는 이와 동등한 것)에 대한 호출을 생각해보십시오.

대신에 할 수있는 것은 호출자에게 오류 코드를 반환하는 것입니다.

사실, 치명적 오류로 갑자기 종료하는 것은 확실히 최고의 프로그래밍 스타일이 아닙니다 (Subversion의 libsvn는 한때 다음과 같은 이유로 매우 나쁜 평판을 얻었습니다. 라이브러리의 코드로 인해 사용하는 프로그램이 갑자기 종료되어 호출 코드가 사용자에게 알리거나 오류 복구를 시도 할 기회가 없습니다).

하지만 치명적인 오류를 감지 할 때 갑자기 종료 할 수 있다는 것은 예상되는 조건에서 작동하는 솔루션을 개발하는 데있어 상당히 실용적 이며 셸 프로그래밍 (따라서 GNU Bash 프로그래밍도 포함)은 항상 간단하고 실용적인 솔루션 은 가능한 모든 스펙을 신중하게 처리하는 복잡한 솔루션이 아닙니다. l 경우 (C, Tcl, Perl, Python 또는 PowerShell 등 다른 많은 도구 / 언어가 있습니다.)

누군가 Bourne 쉘 스크립트를 사용하는 이유도 위에서 언급 한 도구 / 언어를 사용하는 대신 첫 번째 장소는 전자를 사용하는 것이 후자를 사용하는 것보다 실제로 유용한 작업을 수행하는 것을 조합하는 것이 훨씬 쉽기 때문입니다. 한때 쉘 스크립팅을 통해 사용자가 거의 동일한 구문을 사용할 수 있다고 가정했습니다. 매일 대화식으로 사용하는 도구이므로 이미 익숙한 것입니다.

당신은 다음과 같이 질문했습니다. bash에 내장 된 return명령은 셸 기능이 있지만 왜 “exit”명령이 셸 기능에 충분하지 않습니까?

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다