Interesting $0 Problem

Arthur Chance freebsd at qeng-ho.org
Fri Oct 28 08:45:29 UTC 2016


On 28/10/2016 02:30, Tim Daneliuk wrote:
> I was fidding with some shell code today and discovered it was breaking
> because $0 was returning "-/usr/local/bin/bash".   Why is there a leading
> dash here?  I've not seen that before.
> 

This is from "man sh" in the "Invocation" section but presumably bash is
mimicking the standard behaviour.

> When first starting, the shell inspects argument 0, and if it begins
> with a dash (‘-’), the shell is also considered a login shell.  This
> is normally done automatically by the system when the user first
> logs in.

And in the source code for /usr/bin/login

        /*
         * Login shells have a leading '-' in front of argv[0]
         */


Prepending a dash to a login shell has been standard behaviour since the
BSD days at least. I think it was in version 6 of the original Bell Labs
Unix as well, but after three and a half decades my memories for such
details are a bit hazy. Anyway, it's a standard marker.

-- 
Schrödinger's cat had 18 half lives.


More information about the freebsd-questions mailing list