delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/03/23/22:43:03

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-ID: <4242381E.2020008@endbracket.net>
Date: Thu, 24 Mar 2005 14:46:38 +1100
From: Michael Wardle <michael AT endbracket DOT net>
User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206)
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: [patch] invoking user's preferred shell from cygwin.bat
X-IsSubscribed: yes

--------------010008040703090106010905
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi

As you will know, the default Cygwin shortcuts invoke "cygwin.bat" which 
in turn runs "bash --login".

On most of my Unix accounts, I have tcsh set as my login shell, and have 
also started to find zsh quite useful, therefore I would prefer to be 
able to set my preferred shell in Cygwin as well.  Most Unix systems do 
this with the pw_shell field of the password database, /etc/passwd.

I have attached a simple C source file which tries to use the user's 
shell if it's specified in the password database.  You might compile 
this and make it available with a name such as /bin/shell and change 
cygwin.bat to invoke "shell" instead of "bash --login".

Design decisions:
- falls back to the default shell rather than exiting if a user
   doesn't exist since Cygwin doesn't currently require a valid
   user account
- uses the default shell if the shell field in /etc/passwd is blank
   as many other Unixes do
- uses /bin/bash as the default shell since cygwin.bat uses that
   as the default

Features:
- sets argv[0] to the shell's basename prefixed by a hyphen/minus
   character which makes most common shells switch to "login" mode

I hope you find it useful.

-- 
Michael Wardle

--------------010008040703090106010905
Content-Type: text/plain;
 name="shell.c"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="shell.c"

LyoKICogc2hlbGwgLSBzdGFydCB1c2VyJ3MgcHJlZmVycmVkIHNoZWxsCiAq
LwoKI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8ZXJybm8uaD4K
I2luY2x1ZGUgPHB3ZC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUg
PHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDx1bmlz
dGQuaD4KCiNkZWZpbmUgREVGQVVMVF9TSEVMTCAiL2Jpbi9iYXNoIgojZGVm
aW5lIFBBVEhfU0VQQVJBVE9SICcvJwoKaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKiphcmd2KQp7Cgljb25zdCBzdHJ1Y3QgcGFzc3dkICpwYXNzd2Q7Cglj
b25zdCBjaGFyICpzaGVsbDsKCWNoYXIgKmJhc2VuYW1lOwoJY2hhciAqYXJn
MDsKCWNoYXIgKiphcmdzOwoKCS8qIEdldCB0aGUgY3VycmVudCB1c2VyJ3Mg
c2hlbGwgKi8KCWVycm5vID0gMDsKCXBhc3N3ZCA9IGdldHB3dWlkKGdldHVp
ZCgpKTsKCWlmICghcGFzc3dkKSB7CgkJZnByaW50ZihzdGRlcnIsICJDYW5u
b3QgZ2V0IHBhc3N3b3JkIGVudHJ5OiAlc1xuIiwKCQkJc3RyZXJyb3IoZXJy
bm8pKTsKCQlzaGVsbCA9IE5VTEw7Cgl9CgllbHNlIHsKCQlzaGVsbCA9IHBh
c3N3ZC0+cHdfc2hlbGw7Cgl9CgoJLyogRmFsbCBiYWNrIHRvIHRoZSBkZWZh
dWx0IGlmIHRoZSBzaGVsbCBpcyB1bnNldCBvciBlbXB0eSAqLwoJaWYgKCFz
aGVsbHx8ISpzaGVsbCkgewoJCWZwcmludGYoc3RkZXJyLCAiVXNpbmcgZGVm
YXVsdCBzaGVsbCAlc1xuIiwgREVGQVVMVF9TSEVMTCk7CgkJc2hlbGwgPSBE
RUZBVUxUX1NIRUxMOwoJfQoKCS8qIFNldCB0aGUgU0hFTEwgZW52aXJvbm1l
bnQgdmFyaWFibGUgZm9yIG1ha2UsIGV0Yy4gKi8KCXNldGVudigiU0hFTEwi
LCBzaGVsbCwgMSk7CgoJLyogU2V0IHVwIHRoZSBzaGVsbCdzIGFyZ3VtZW50
IHZlY3RvciAtIGFyZ3ZbMF0gKi8KCWVycm5vID0gMDsKCWFyZzAgPSAoY2hh
ciAqKW1hbGxvYyhzdHJsZW4oc2hlbGwpKnNpemVvZihjaGFyKSsxKTsKCWlm
ICghYXJnMCkgewoJCXBlcnJvcigiQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBm
b3Igc2hlbGwgYXJndW1lbnQgMFxuIik7CgkJZXhpdCgxKTsKCX0KCWJhc2Vu
YW1lID0gc3RycmNocihzaGVsbCwgKGludClQQVRIX1NFUEFSQVRPUik7Cglp
ZiAoYmFzZW5hbWUpIGJhc2VuYW1lKys7CS8qIG1vdmUgcGFzdCAnLycgKi8K
CWlmIChiYXNlbmFtZSkgewoJCS8qIFNldCBhcmcwIHRvIC1iYXNlbmFtZSB0
byBkZW5vdGUgbG9naW4gc2hlbGwgKi8KCQlzdHJjcHkoYXJnMCwgIi0iKTsK
CQlzdHJjYXQoYXJnMCwgYmFzZW5hbWUpOwoJfQoJZWxzZSB7CgkJLyogTGVh
dmUgYXJnMCBhcyBmdWxsIHBhdGggKi8KCQlzdHJjcHkoYXJnMCwgc2hlbGwp
OwoJfQoKCS8qIFNldCB1cCB0aGUgc2hlbGwncyBhcmd1bWVudCB2ZWN0b3Ig
LSBhcmd2ICovCgllcnJubyA9IDA7CglhcmdzID0gKGNoYXIgKiopbWFsbG9j
KDIqc2l6ZW9mKGFyZzApKTsJLyoge2FyZzAsIE5VTEx9ICovCglpZiAoIWFy
Z3MpIHsKCQlwZXJyb3IoIkNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHNo
ZWxsIGFyZ3VtZW50c1xuIik7CgkJZXhpdCgxKTsKCX0KCWFyZ3NbMF0gPSBh
cmcwOwoJYXJnc1sxXSA9IChjaGFyICopTlVMTDsKCgkvKiBTdGFydCB0aGUg
c2hlbGwgKi8KCWVycm5vID0gMDsKCWlmIChleGVjdihzaGVsbCwgYXJncykg
PT0gLTEpIHsKCQlmcHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBleGVjdXRlIHNo
ZWxsICVzOiAlc1xuIiwgc2hlbGwsCgkJCXN0cmVycm9yKGVycm5vKSk7CgkJ
ZXhpdCgxKTsKCX0KCglleGl0KDApOwp9Cgo=


--------------010008040703090106010905
Content-Type: text/plain; charset=us-ascii

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/
--------------010008040703090106010905--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019