From owner-freebsd-questions@freebsd.org Tue Jan 31 21:51:34 2017 Return-Path: Delivered-To: freebsd-questions@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 96498CCA52E for ; Tue, 31 Jan 2017 21:51:34 +0000 (UTC) (envelope-from wblock@wonkity.com) Received: from wonkity.com (wonkity.com [67.158.26.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "wonkity.com", Issuer "wonkity.com" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 681E81EA5 for ; Tue, 31 Jan 2017 21:51:33 +0000 (UTC) (envelope-from wblock@wonkity.com) Received: from wonkity.com (localhost [127.0.0.1]) by wonkity.com (8.15.2/8.15.2) with ESMTPS id v0VLpKoK056277 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 31 Jan 2017 14:51:20 -0700 (MST) (envelope-from wblock@wonkity.com) Received: from localhost (wblock@localhost) by wonkity.com (8.15.2/8.15.2/Submit) with ESMTP id v0VLpKBl056274; Tue, 31 Jan 2017 14:51:20 -0700 (MST) (envelope-from wblock@wonkity.com) Date: Tue, 31 Jan 2017 14:51:20 -0700 (MST) From: Warren Block To: byrnejb@harte-lyne.ca cc: Polytropon , freebsd-questions@freebsd.org Subject: Re: Variable assignment in sh In-Reply-To: <5f51e2c3bdb8a20c6a7786c2b345c957.squirrel@webmail.harte-lyne.ca> Message-ID: References: <20170131161824.a9f1ef46.freebsd@edvax.de> <20170131185103.7f911dfb.freebsd@edvax.de> <5f51e2c3bdb8a20c6a7786c2b345c957.squirrel@webmail.harte-lyne.ca> User-Agent: Alpine 2.20 (BSF 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (wonkity.com [127.0.0.1]); Tue, 31 Jan 2017 14:51:20 -0700 (MST) X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jan 2017 21:51:34 -0000 On Tue, 31 Jan 2017, James B. Byrne via freebsd-questions wrote: > > On Tue, January 31, 2017 12:51, Polytropon wrote: >> On Tue, 31 Jan 2017 12:11:49 -0500, James B. Byrne via >> freebsd-questions wrote: >>> >>> In any case, I now have set the shell in the root crontab file >>> explicitly to /usr/local/bin/bash in hopes of avoiding this problem >>> in the future. >> >> That _might_ introduce problems in the future when bash is not >> available. My suggestion: Use /bin/sh for scripting except you >> need to rely on a "bash-ism", a feature that bash can provide, >> but sh cannot. However, you can use bash interactively to test >> sh commands, there is "backward compatibility" (bash can be seen >> as a superset of sh). >> > > How would bash become unavailable on this particular system without > someone specifically removing it? Boot into single user mode. /usr is not (necessarily) mounted, and doing anything could be challenging. If you absolutely must have bash for root, leave root's shell as csh and run bash from within .cshrc. If /usr is not mounted, it will just fail and leave you with a chance to fix things from a running csh. It's important to note that shells are two things, an interactive user interface, and a shell script interpreter. Thanks to a rich selection, one program does not have to be used for both. For example, I use csh along with a large autocompletion file and some aliases and it works very well for that. I would not write scripts for csh, though, because the built-in script implementation is not great. Not a problem, since just putting #!/bin/sh as the first line of a script causes it to run with the standard sh interpreter.