From owner-freebsd-questions@freebsd.org Sun Jul 19 17:58:14 2020 Return-Path: Delivered-To: freebsd-questions@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0A83A365110 for ; Sun, 19 Jul 2020 17:58:14 +0000 (UTC) (envelope-from yuripv@yuripv.dev) Received: from wnew2-smtp.messagingengine.com (wnew2-smtp.messagingengine.com [64.147.123.27]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4B8sz9176mz3Zmf for ; Sun, 19 Jul 2020 17:58:12 +0000 (UTC) (envelope-from yuripv@yuripv.dev) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailnew.west.internal (Postfix) with ESMTP id 9BE851336 for ; Sun, 19 Jul 2020 13:58:11 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Sun, 19 Jul 2020 13:58:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yuripv.dev; h= subject:to:references:from:message-id:date:mime-version :in-reply-to:content-type:content-transfer-encoding; s=fm1; bh=W EOW8GOckSjKDH0KznvLSOuckelR3C3gRgPfwYhOco0=; b=hQnKAD2Sw3uxAAfMm 5iAWDoxwgK83h3Tw6/KWPhcnQW1Lfx5qwseMdidkm4IZyCNVYPbRY3LSFH+vwOWY aBj5+fHY5614AqPeYzVT2tZPaDjcTL+1f+c7k5Lwb+uaBJObbfYnRdyXrbwAgy2p pZssT1LnNMZ71cO7dHbcs1757g6zkRDdHpQuNRCDe6c0m+ccgAx5zLLoqtzLXPFV DbUmruc77n97KoD40QNjWH9vPpTN+P2XMFeK5w+eBT4gt4aCkSlaMyHbPsJPpNoX TEak2XrgTC7AyDgkASX3izByKyOE7dYXi7rhFM5JpCkxUYrr6n4lGJWRaHsFBgqS U5eLg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; bh=WEOW8GOckSjKDH0KznvLSOuckelR3C3gRgPfwYhOc o0=; b=kWyMH/jEhLg649coL99p7N1G/9EMBKBXxTUBuqTDLd7pRn+8zInCD3b2D VKfx0eGUBbAgabSKKaiXJBGu+/7cWJH7izvNVE5g5nxvrmpvIwBg6gG6lVQLehRO c3sc3NNcdMbkRy3LUeNDttxgdBeOILBUglO/oJqCfXMBhd0E9i57h9R1rU8l0J7k p7pXpwgYWaalGHZIk5WyaDFXwHukbeC4PgZ0LkJfZJsyvRHDI0qBcL/TAbTXgSQh 5696G/v8MwbVFWWRidtBMZ5/Br8gPcP8N1OM1J7crClXTYS3A25V7KXjCQUrn6lm 8NXyj8SLEBz3pJLedf6XKfOgd6ZCw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrgedugdduvddtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefuvfhfhffkffgfgggjtgfgsehtje ertddtfeejnecuhfhrohhmpegjuhhrihcurfgrnhhkohhvuceohihurhhiphhvseihuhhr ihhpvhdruggvvheqnecuggftrfgrthhtvghrnhepkeejhfevffdtkeegvedvkeejgffgvd elffehjeejveetffegiedtieegtddtveeknecuffhomhgrihhnpehophgvnhhgrhhouhhp rdhorhhgnecukfhppeeluddrvdegtddruddvgedrudefjeenucevlhhushhtvghrufhiii gvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpeihuhhrihhpvheshihurhhiphhvrdgu vghv X-ME-Proxy: Received: from [192.168.1.6] (unknown [91.240.124.137]) by mail.messagingengine.com (Postfix) with ESMTPA id 74A6830600A6 for ; Sun, 19 Jul 2020 13:58:10 -0400 (EDT) Subject: Re: Locale oddity To: freebsd-questions@freebsd.org References: From: Yuri Pankov Message-ID: <0467d480-ba58-3d5d-ca77-34d784b667f9@yuripv.dev> Date: Sun, 19 Jul 2020 20:58:08 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4B8sz9176mz3Zmf X-Spamd-Bar: ++++ Authentication-Results: mx1.freebsd.org; dkim=pass header.d=yuripv.dev header.s=fm1 header.b=hQnKAD2S; dkim=pass header.d=messagingengine.com header.s=fm3 header.b=kWyMH/jE; dmarc=none; spf=pass (mx1.freebsd.org: domain of yuripv@yuripv.dev designates 64.147.123.27 as permitted sender) smtp.mailfrom=yuripv@yuripv.dev X-Spamd-Result: default: False [4.49 / 15.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[]; R_DKIM_ALLOW(0.00)[yuripv.dev:s=fm1,messagingengine.com:s=fm3]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; R_SPF_ALLOW(0.00)[+ip4:64.147.123.27]; MIME_GOOD(-0.10)[text/plain]; TO_DN_NONE(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[freebsd-questions@freebsd.org]; URIBL_RED(3.50)[yuripv.dev:dkim]; RCPT_COUNT_ONE(0.00)[1]; BAD_REP_POLICIES(0.10)[]; RCVD_COUNT_THREE(0.00)[4]; DMARC_NA(0.00)[yuripv.dev]; NEURAL_SPAM_SHORT(0.02)[0.025]; DKIM_TRACE(0.00)[yuripv.dev:+,messagingengine.com:+]; HAS_ANON_DOMAIN(0.10)[]; NEURAL_SPAM_LONG(0.63)[0.626]; NEURAL_SPAM_MEDIUM(0.34)[0.339]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:11403, ipnet:64.147.123.0/24, country:US]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_IN_DNSWL_LOW(-0.10)[64.147.123.27:from] X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2020 17:58:14 -0000 Morten Bo Johansen via freebsd-questions wrote: > Hi > > (This is FreeBSD 12.1-RELEASE-p7 amd64) > > If I unset the $LANG variable, then all other LC_* category > locale variables will automatically be set to "C" except for > the $LC_ALL variable: > > ~/ % LANG= locale > LANG= > LC_CTYPE="C" > LC_COLLATE="C" > LC_TIME="C" > LC_NUMERIC="C" > LC_MONETARY="C" > LC_MESSAGES="C" > LC_ALL= > > Otherwise they are: > > ~/ % locale > LANG=da_DK.UTF-8 > LC_CTYPE="da_DK.UTF-8" > LC_COLLATE="da_DK.UTF-8" > LC_TIME="da_DK.UTF-8" > LC_NUMERIC="da_DK.UTF-8" > LC_MONETARY="da_DK.UTF-8" > LC_MESSAGES="da_DK.UTF-8" > LC_ALL= > > I don't understand this behaviour. Could someone explain the > logic of this to me? > > To me it seems like a bug. I'm not sure what exactly you are asking, so I'll just quote the specification, https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html, for the logic used: -------- The values of locale categories shall be determined by a precedence order; the first condition met below determines the value: 1. If the LC_ALL environment variable is defined and is not null, the value of LC_ALL shall be used. 2. If the LC_* environment variable (LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) is defined and is not null, the value of the environment variable shall be used to initialize the category that corresponds to the environment variable. 3. If the LANG environment variable is defined and is not null, the value of the LANG environment variable shall be used. 4. If the LANG environment variable is not set or is set to the empty string, the implementation-defined default locale shall be used. -------- Going backwards, when you unset LANG, the last rule is applied, and our default locale is C. If you have LANG set, rule 3 is applied . Rules 1 and 2 are mostly used as overrides over the system-wide LANG setting, so LC_* variables are NOT set by default.