#
d286d234 |
| 18-Sep-2022 |
kre <kre@NetBSD.org> |
Oops, somehow managed to commit an older version where NBSH_INVOCATION start char was '@' rather than '!' (which meant not lexically ordered). This is how it was intended to be (and is documented).
|
#
4713e4ae |
| 18-Sep-2022 |
kre <kre@NetBSD.org> |
Add the -l option (aka -o login): be a login shell. Meaningful only on the command line (with both - and + forms) - overrides the presence (or otherwise) of a '-' as argv[0][0].
Since this allows
Add the -l option (aka -o login): be a login shell. Meaningful only on the command line (with both - and + forms) - overrides the presence (or otherwise) of a '-' as argv[0][0].
Since this allows any shell to be a login shell (which simply means that it runs /etc/profile and ~/.profile at shell startup - there are no other side effects) add a new, always set at startup, variable NBSH_INVOCATION which has a char string as its value, where each char has a meaning, more or less related to how the shell was started. See sh(1). This is intended to allow those startup scripts to tailor their behaviour to the nature of this particular login shell (it is possible to detect whether a shell is a login shell merely because of -l, or whether it would have been anyway, before the -l option was added - and more). The var could also be used to set different values for $ENV for different uses of the shell.
show more ...
|
#
f2397320 |
| 09-Aug-2021 |
kre <kre@NetBSD.org> |
Fix the fix to a typo in one of the comments.
|
#
1e92077d |
| 08-Aug-2021 |
andvar <andvar@NetBSD.org> |
s/varable/variable s/explictly/explicitly/ s/proerly/properly/ in comments.
|
#
8d2a5fb4 |
| 14-Feb-2019 |
kre <kre@NetBSD.org> |
Add the "specialvar" built-in command. Discussed (well, mentioned anway) on tech-userlevel with no adverse response.
This allows the magic of vars like HOSTNAME SECONDS, ToD (etc) to be restored s
Add the "specialvar" built-in command. Discussed (well, mentioned anway) on tech-userlevel with no adverse response.
This allows the magic of vars like HOSTNAME SECONDS, ToD (etc) to be restored should it be lost - perhaps by having a var of the same name imported from the environment (which needs to remove the magic in case a set of scripts are using the env to pass data, and the var name chosen happens to be one of our magic ones).
No change to SMALL shells (or smaller) - none of the magic vars (except LINENO, which is exempt from all of this) exist in those, hence such a shell has no need for this command either.
show more ...
|
#
7a6f7091 |
| 09-Feb-2019 |
kre <kre@NetBSD.org> |
DTRT when dynamically generated variables return "unset" instead of a value. There are none which do that at the minute, so this is a NFCI change, which is just making the code correct even though
DTRT when dynamically generated variables return "unset" instead of a value. There are none which do that at the minute, so this is a NFCI change, which is just making the code correct even though nothing currently triggers any bugs.
show more ...
|
#
d5521efe |
| 09-Feb-2019 |
kre <kre@NetBSD.org> |
INTON / INTOFF audit and cleanup.
No visible differences expected - there is a remote chance that some internal lossage may no longer occur in interactive shells that receive SIGINT (untrapped) at i
INTON / INTOFF audit and cleanup.
No visible differences expected - there is a remote chance that some internal lossage may no longer occur in interactive shells that receive SIGINT (untrapped) at inopportune times, but you would have had to have been very unlucky to have ever suffered from that.
show more ...
|
#
44e58149 |
| 21-Jan-2019 |
kre <kre@NetBSD.org> |
Fix an off by one buffer length problem. Fortunately, it was off by one in the "safe" way (it was ensuring the buffer always ended in 2 \0 characters ... one is enough.) This could affect the exp
Fix an off by one buffer length problem. Fortunately, it was off by one in the "safe" way (it was ensuring the buffer always ended in 2 \0 characters ... one is enough.) This could affect the expansions of LINENO RANDOM and SECONDS, though only if they have at least 8 digits (and then, only sometimes). RANDOM thus is safe, as it never produces a number with more than 5 digits, you'd need a script with 10000000 lines before there might be an issue with LINENO (and even autoconf generated scripts don't generally get that bit) and a shell would need to be running for almost 4 months for SECONDS to climb that high.
Nevertheless: XXX pullup -8.
show more ...
|
#
4648de02 |
| 12-Dec-2018 |
kre <kre@NetBSD.org> |
Implement: readonly -q VAR... readonly -p VAR... export -q [-x] VAR... export -p [-x] VAR...
all available only in !SMALL shells - and while here, limit "export -x" to full sized shells as well.
Implement: readonly -q VAR... readonly -p VAR... export -q [-x] VAR... export -p [-x] VAR...
all available only in !SMALL shells - and while here, limit "export -x" to full sized shells as well.
Also, do a better job of arg checking and validating of the export and readonly commands (which is really just one built-in) and of issuing error messages when something bogus is detected.
Since these commands are special builtin commands, any error causes shell exit (for non-interactive shells).
show more ...
|
#
16c2ac0b |
| 12-Dec-2018 |
kre <kre@NetBSD.org> |
Fix a botch made in 1.70 (a bit over a week ago) where var=foo; readonly var=new now fails.
If var was already set, an attempt to make it readonly, and assign it a new value at the same time, faile
Fix a botch made in 1.70 (a bit over a week ago) where var=foo; readonly var=new now fails.
If var was already set, an attempt to make it readonly, and assign it a new value at the same time, failed - the readonly flag was set too soon.
Pointed out by Martijn Dekker (thanks).
Also, while here, add a couple of comments.
show more ...
|
#
758207f4 |
| 04-Dec-2018 |
kre <kre@NetBSD.org> |
Alter a design botch when magic (self modifying) variables were added to sh ... in other shells, setting such a variable (for most of them) causes it to lose its special properties, and act the same
Alter a design botch when magic (self modifying) variables were added to sh ... in other shells, setting such a variable (for most of them) causes it to lose its special properties, and act the same as any other variable. I had assumed that was just implementor laziness... I was wrong.
From now on the NetBSD shell will act like the others, and if vars like HOSTNAME (and SECONDS, etc) are used as variables in a script or whatever, they will act just like normal variables (and unless this happens when they have been made local, or as a variable-assignment as a prefix to a command, the special properties they would have had otherwise are lost for the remainder of the life of the (sub-)shell in which the variables were set).
Importing a value from the environment counts as setting the value for this purpose (so if HOSTNAME is set in the environment, the value there will be the value $HOSTNAME expands to).
The two exceptions to this are LINENO and RANDOM. RANDOM needs to be able to be set to (re-)set its seed. LINENO needs to be able to be set (at least in the "local" command) to achieve the desired functionality. It is unlikely that any (sane) script is going to want to use those two as normal vars however.
While here, fix a minor bug in popping local vars (fn return) that need to notify the shell of changes in value (like PATH).
Change sh(1) to reflect this alteration. Also add doc of the (forgotten) magic var EUSER (which has been there since the others were added), and add a few more vars (which are documented in other places in sh(1) - like ENV) into the defined or used variable list (as well as wherever else they appear).
XXX pullup -8
show more ...
|
#
94185f2b |
| 03-Dec-2018 |
kre <kre@NetBSD.org> |
Fix "export -x" (and its consequences) to behave as originally intended (and as documented) rather than how it has been behaving (which was not very rational.) Since it is unlikely that anyone is u
Fix "export -x" (and its consequences) to behave as originally intended (and as documented) rather than how it has been behaving (which was not very rational.) Since it is unlikely that anyone is using this, the change should be mostly invisible.
While here, a couple of other minor cleanups: . One call of geteuid() is enough in choose_ps1() . Fix a typo in a comment . Improve appearance (whitspace changes) in find_var()
show more ...
|
#
f55ad68d |
| 13-Jul-2018 |
kre <kre@NetBSD.org> |
Remove atoi()
Mostly use number() (no longer implemented using atoi()) when an unsigned integer is required, but use strtoXXX() when a conversion is wanted, without the possibility or error (like se
Remove atoi()
Mostly use number() (no longer implemented using atoi()) when an unsigned integer is required, but use strtoXXX() when a conversion is wanted, without the possibility or error (like setting OPTIND and RANDOM). Always init OPTIND to 1 when sh starts (overriding anything in environ.)
show more ...
|
#
ee836789 |
| 19-Nov-2017 |
kre <kre@NetBSD.org> |
Implement the -X option - an apparent variant of -x which sends all trace output to the stderr which existed when the -X option was (last) enabled. It also enables tracing by enabling -x (and when re
Implement the -X option - an apparent variant of -x which sends all trace output to the stderr which existed when the -X option was (last) enabled. It also enables tracing by enabling -x (and when reset, +X, also resets the 'x' flag (+x)). Note that it is still -x/+x which actually enables/disables the trace output. Hence "apparent variant" - what -X actually does (aside from setting -x) is just to lock the trace output, rather than having it follow wherever stderr is later redirected.
show more ...
|
#
4d2775d5 |
| 28-Oct-2017 |
kre <kre@NetBSD.org> |
Extract the variable name validity test from setname() into a function of its own. It will soon be needed from another source.
|
#
725e8947 |
| 31-Aug-2017 |
kre <kre@NetBSD.org> |
Fix a bug noticed by Soren Jacobsen running the netbsd-6-0 build.sh which causes a core dump in some exotic circumstances (when restoring local variables when a function returns). ("build.sh makewra
Fix a bug noticed by Soren Jacobsen running the netbsd-6-0 build.sh which causes a core dump in some exotic circumstances (when restoring local variables when a function returns). ("build.sh makewrapper" exposed it.)
This was introduced in 1.63 - not as part of the substance of that change (addition) but as an unrelated "must be the right thing to do" cleanup, which wasn't...
show more ...
|
#
3e17ce35 |
| 24-Jul-2017 |
kre <kre@NetBSD.org> |
NFC: DEBUG mode only change - add a little more tracing.
|
#
2ac8f38e |
| 12-Jul-2017 |
kre <kre@NetBSD.org> |
Fix a reference after free (and consequent nonsense diagnostic for attempts to set readonly variables) I added in 1.60 by incompletely copying the FreeBSD fix for the lost memory issue.
|
#
7550b954 |
| 05-Jul-2017 |
kre <kre@NetBSD.org> |
DEBUG only changes. Convert the TRACE() calls in the remaining files that still used it to the new format. NFC.
|
#
f7aed4f8 |
| 30-Jun-2017 |
kre <kre@NetBSD.org> |
Implement a bunch of new shell environment variables. many mostly useful in prompts when expanded at prompt time, but all available for general use. Many of the new ones are not available in SMALL sh
Implement a bunch of new shell environment variables. many mostly useful in prompts when expanded at prompt time, but all available for general use. Many of the new ones are not available in SMALL shells (they work as normal if assigned, but the shell does not set or use them - and there is no magic in a SMALL shell (usually for install media.))
show more ...
|
#
609932b7 |
| 28-Jun-2017 |
kre <kre@NetBSD.org> |
Now libedit supports embedded mode switch sequence, improve sh support for them (adds PSlit variable to set the magic character).
|
#
352d0b17 |
| 27-Jun-2017 |
kre <kre@NetBSD.org> |
Properly support EDITRC - use it as (naming) the file when setting up libedit, and re-do the config whenever EDITRC is set.
|
#
3389682f |
| 17-Jun-2017 |
kre <kre@NetBSD.org> |
Cosmetic changes to variable flags - make their values more suited to my delicate sensibilities... (NFC).
Arrange not to barf (ever) if some turkey makes _ readonly. Do this by adding a VNOERROR f
Cosmetic changes to variable flags - make their values more suited to my delicate sensibilities... (NFC).
Arrange not to barf (ever) if some turkey makes _ readonly. Do this by adding a VNOERROR flag that causes errors in var setting to be ignored (intended use is only for internal shell var setting, like of "_"). (nb: invalid var name errors ignore this flag, but those should never occur on a var set by the shell itself.)
From FreeBSD: don't simply discard memory if a variable is not set for any reason (including because it is readonly) if the var's value had been malloc'd. Free it instead...
show more ...
|
#
b96c279f |
| 17-Jun-2017 |
kre <kre@NetBSD.org> |
s/volatile/const/ -- wonderful how opposites attract like this.
|
#
6ce5da5b |
| 07-Jun-2017 |
kre <kre@NetBSD.org> |
Unbreak (at least) i386 build .... I have no idea why this built for me on amd64 (problem was missing prototype for snprintf witout <stdio.h>)
While here, add some (DEBUG mode only) tracing that pro
Unbreak (at least) i386 build .... I have no idea why this built for me on amd64 (problem was missing prototype for snprintf witout <stdio.h>)
While here, add some (DEBUG mode only) tracing that proved useful in solving another problem.
show more ...
|