Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , 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 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 Content-Type: multipart/mixed; boundary="------------010008040703090106010905" 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--