오늘날 많은 프로젝트에서는 둘 이상의 프로그래밍/스크립팅 언어를 사용하고 표준을 채택합니다.마른전통적으로 동일한 정보가 필요한 경우 별도의 구성 파일이 없어야 합니다. 약간의 조사 끝에 /etc
Ubuntu에서 호환되지 않는 구문이 많이 사용되는 것을 발견했습니다.
varname=value
-/etc/adduser.conf
varname: value
-/etc/debconf.conf
varname = value
-/etc/deluser.conf
$varname value
/etc/insserv.conf
varname value
-/etc/login.defs
set varname value
-/etc/lftp.conf
[section] varname = value
/etc/mke2fs.conf
section label varname value set varname value
/etc/smartd.conf
내가 아는 한, 이것들 중 어느 것도 "Yaml 또는 XML 또는 JSON," (그 중 하나는이니하지만). 단순 값( debug = true
, welcome = "Hello world!"
, threads = 4
), 단순 값 배열( servers = [dev, test, prod]
), 다른 변수를 참조하는 값( )을 제공해야 하는 프로젝트에 thread_msg = "Using $threads threads"
어떤 형식을 권장하고 그 이유를 설명하시겠습니까?불다,진주그리고PHP?
답변1
처음 3개는 구성 형식이 아닌 직렬화 형식입니다. 이러한 형식은 기계가 읽고 쓰기는 쉽지만 사람이 읽고 쓰기는 쉽지 않습니다. 하다아니요구성에 사용하세요. 사용자가 당신을 싫어할 수도 있습니다.
또한 이러한 파일 중 일부는 NAME value
쌍으로만 구성되어 있습니다. 다른 파일은 실제 구성 파일이 아니라 쉘 파일일 수 있습니다. 이는 기본적으로 처리를 위해 쉘에서 얻을 수 있음을 의미합니다.
INI 또는 Apache Style과 같은 실제 구성 형식을 사용하는 것이 좋습니다(Config::General
펄에서)
Config::Any
사용자가 기본적으로 원하는 형식을 선택할 수 있도록 하기 때문에 구성된 Perl 모듈을 로드하는 데 좋은 선택입니다.
답변2
Bash에서는 다른 형식을 읽고, 구문 분석하고, 실행하는 것이 쉽지 않은 반면 Perl은 이러한 작업을 위해 작성된 언어인 반면 PHP에서는 꽤 쉬울 것이기 때문에 bash에서 얻을 수 있는 형식을 사용하겠습니다.