Age | Commit message (Collapse) | Author | Files | Lines |
|
Es is an extensible shell. The language was derived from the Plan 9
shell, rc, and was influenced by functional programming languages, such as
Scheme, and the Tcl embeddable programming language. This implementation is
derived from Byron Rakitzis's public domain implementation of rc, and was
written by Paul Haahr and Byron Rakitzis.
|
|
recent releases patches, which fix:
Patch-13:
Bash can leak memory when referencing a noneexistent
associative array element.
Patch-14:
Bash defers processing additional terminating signals when
running the EXIT trap while exiting due to a terminating signal.
This patch allows the new terminating signal to kill the shell
immediately.
Patch-15:
There are several cases where bash is too aggressive when
optimizing out forks in subshells. For example, `eval' and
traps should never be optimized.
|
|
Changes since 6.24.04:
16. V6.24.06 - 2022-12-12
15. V6.24.05 - 2022-12-04
14. Build and release process improvements (Luke Mewburn, Kimmo Suominen)
|
|
|
|
* Replace the SUBST routine with REPLACE_INTERPRETER.
* Replace MAKEFLAGS with MAKE_FLAGS.
* Corrently set INSTALL_ENV in the post-install target.
|
|
|
|
Changes since 6.24.03:
13. V6.24.04 - 2022-12-03
12. Fix a test to match output from old bash versions (Corinna Vinschen)
|
|
Changes since 6.24.02:
11. V6.24.03 - 20221203
10. Fix set/@ test when diff is from busybox (Luke Mewburn)
9. Handle \c in echo properly instead of printing garbage past the
end of the string.
8. Add a configure check for a working sbrk() (Luke Mewburn)
|
|
|
|
|
|
These 3 new patches fix the following bugs:
Patch 10:
Bash-5.2 checkr the first 128 characters of an executable file
that execve() refuses to execute to see whether it's a binary
file before trying to execute it as a shell script. This defeats
some previously-supported use cases like "self-executing" jar
files or "self-uncompressing" scripts.
Patch 11:
Using timeouts and readline editing with the `read' builtin
(read -e -t) can leave the readline timeout enabled, potentially
resulting in an erroneous timeout on the next call.
Patch 12:
When running in bash compatibility mode, nested command
substitutions can leave the `extglob' option enabled.
|
|
Changes since 6.24.01:
7. V6.24.02 - 20221124
6. Complete mdoc-based manual page (Luke Mewburn)
5. Fix rechist() check for NULL filename (broke when arg was renamed).
> cd
> rm .history
> unset savehist
> history -S /tmp/s
> exit
A ~/.history has been written when it should not have been.
4. Make OpenBSD use SHORT_STRINGS and fix non-SHORT_STRINGS compilation.
|
|
- New ++ operator (merelymyself)
In this release, you can now use the ++ operator to append lists together.
For example, you can combine two lists into a new lists made up of the both
lists.
Note: Currently, this operator cannot be used to join two tables. This
functionality is still being worked on and will likely be present in the
next version.
- Improved consistency across commands and types
Nushell continues improve quality of the language and shell with a set of
consistency improvements in this release. These include:
- More iterating filter commands now support the $in variable consistently
(webbedspace)
- Lists now support upsert (fdncred)
- merge can now also operate on records (webbedspace)
- str substring can take ranges (rgwood)
- from and to now show help info (rgwood)
- Right prompts can now be on the last line (nibon7)
Previously the right prompt appeared only on the same line where the user
input started. Now you can choose to place the right prompt part on the last
line of user input. This feature is not enabled by default, you can enable
it using the config nu command to modify the config.nu file, just set
render_right_prompt_on_last_line to true.
- Configuring the default value viewer via display_output hook (perbothner)
You're now able to configure a new hook, called display_output, which will
become the default way that you view data.
Using this, you can for example, use table --expand to always see fully
expanded tables.
If your terminal supports it, you can this to render a more full-featured
output. For example, DomTerm could be used by setting the display_output
hook to: to html --partial --no-color | domterm hcat, sending html to the
terminal to be rendered when displaying values.
- Updated PR Review Process
Recently, we have been fortunate to see a rise in submitted pull requests
and we are super grateful for this growing desire to improve Nushell.
Unfortunately, in some cases, a well-intended PR does not match the
direction Nushell is going, forcing us to close it which leads to wasted
time and effort. To help focus PRs in the future, we kindly ask potential
contributors to first reach out to us before making a substantial change to
Nushell, especially if the change will affect user experience. We updated
our contributing guide as well as the PR template to reflect this policy.
- Completion actions now more familiar (dandavison)
We've also recently improved how completions work in Nushell to feel closer
to how other shells work. Specifically:
- Completion goes "as far as possible". So, the entire word if there's a
unique completion, or else up to the shared prefix of possible
completions.
- Removes the quick completion behavior whereby a word was completed
automatically as soon as the input came to have a unique completion.
- Tab now completes instead of selecting the next menu item (this can be
configured)
- Breaking changes
- New --force (-f) flag for the mv command. This change alters mv default
behavior. By default overwriting existing files is now prevented (You can
use alias mv = mv -f in you config to get the old defaults back). (#6904)
- The column name for the command name in $nu.scope.commands has been
changed from command to name. Thus, $nu.scope.commands | where name =~
zip would give you specific command info. (#7007)
- The str distance command now directly returns an Int instead of a record
{"distance": <Int>} (#6963)
- The argument order of format filesize was made consistent with other
commands that accept a CellPath to specify fields that should be affected
by it. Now the string specifying the format is the first positional
argument and the cell path is specified in the following positional
argument(s). (#6879)
- The --perf flag for Nu was removed as part of an effort to simplify
diagnostics logging #6834
|
|
|
|
The patches fix the following bugs:
Patch 3:
Command substitutions need to preserve newlines instead of replacing
them with semicolons
Patch 4:
Bash needs to keep better track of nested brace expansions to
avoid problems with quoting and POSIX semantics.
Patch 5:
Null pattern substitution replacement strings can cause a crash
Patch 6:
In interactive shells, interrupting the shell while entering a command
substitution can inhibit alias expansion.
Patch 7:
Several problems with alias expansion inside command
substitutions when in POSIX mode
Patch 8:
Array subscript expansion can inappropriately quote brackets
if the expression contains < or >.
Patch 9:
Bash arithmetic expansion should allow `@' and `*' to be used
as associative array keys in expressions.
|
|
Bump PKGREVISION.
|
|
|
|
Yash, yet another shell, is a POSIX-compliant command line shell written
in C99 (ISO/IEC 9899:1999). Yash is intended to be the most POSIX -
compliant shell in the world while supporting features for daily
interactive and scripting use. Notable features are:
- Global aliases
- Arrays
- Socket redirection, pipeline redirection, and process redirection
- Brace expansion and extended globbing
- Fractional numbers in arithmetic expansion
- Prompt command and command-not-found handler
- Command line completion with predefined completion scripts for more
than 100 commands
- Command line prediction based on command history
By Paolo Vincenzo Olivo in wip
|
|
Main changes between 1.0.3 and 1.0.4:
- Fixed multiple scoping-related bugs in the += additive assignment
operator.
- A number of crashing bugs have been fixed.
- Various fixes for the Haiku operating system, notably 'ulimit -a'
now works.
- Fixed the expansion of out-of-range \n back references in the
string part of ${parameter//pattern/string}. For example:
v=AB; echo "${v/@(A)B/\0:\1:\2}"
now yields 'AB:A:' instead of 'AB:A:\2'.
- Fixed quoted '!', '^' and '-' within [bracket] expressions in
glob patterns; single or double quotes failed to disable their
operator behaviour.
- Fixed a bug introduced on 2021-04-04 that incorrectly allowed
'typeset' to turn off the readonly and export attributes on a
readonly variable.
- In the emacs line editor, the Ctrl+R reverse-search prompt is
now visually distinct from a literal control character ("^R: "
instead of "^R").
- In the vi line editor, fixed the behaviour of 'C', 'c$' and 'I'
to be consistent with standard vi(1) and with Bolsky & Korn
(1995, p. 121).
- Aliases for many GNU long options have been added to the
/opt/ast/bin built-in commands. Additionally, 'kill -s' now has
a --signal long option alias compatible with the util-linux
option.
- Backported support for 'print -u p' from ksh 93v- for
compatibility with scripts written for 93v-/ksh2020 (this is
equivalent to 'print -p').
|
|
|
|
Themes of this release:
- New table flags
--expand: changes a standard table view; expand the table structure so
internally all data will be displayed as inner tables
- NOTICE
The expand mode can be considered generally slower than a base table view.
So, if you have a large data set it may be slow.
--expand-deep {int}: set a limit after which table enlargement is stopped
--flatten: an --expand view option to return a set of values instead of
table for a simple lists
--flatten-separator {char}: a configuration of a separator for --flatten
--collapse: changes a standard table view; expand the table structure in a
squashed way
- NOTICE
collapse mode currently doesn't support width control, therefore if your
terminal is not wide enough the table might be broken. The collapse mode can
be considered generally slower than a base table view. So, if you have a
large data set it may be slow.
- Breaking changes
The command first 1 now returns a list with the single value rather than the
value itself. This brings it in line with the behaviour of last 1.
The dataframe command with-sql or query dfr has been renamed to query df for
consistency.
- Next Steps
We're continuing to work on language updates and hope to have more
information for you soon.
|
|
1.11.0 (2022-10-14)
Features
add user-defined color palette (#4209) (d93074d)
fish: Enable left and right transience (#4204) (06281c2)
module: Add a meson devenv indicator (#4389) (355800f)
schema: deny unknown keys (#4270) (b5d3d8f)
status: Support formatting of pipestatus separator (#4264) (6e35dfa)
Bug Fixes
buf: fix spacing & harmonize docs with actual configuration (#4450) (3d45236)
directory: don't strip duplicate directory names twice (#4295) (801fbab)
pwsh: avoid potential deadlock in init (#4335) (fd55397)
Performance Improvements
directory: Skip repo resolution if unused by directory config (#4401) (227ec32)
|
|
I can no longer reproduce the build failures with parallel make on
freshly installed system. Sorry for disturbing you.
|
|
|
|
Patch 1: Expanding unset arrays in an arithmetic context can cause a
segmentation fault.
Patch 2: Starting bash with an invalid locale specification for
LC_ALL/LANG/LC_CTYPE can cause the shell to crash.
|
|
|
|
|
|
This is a terse description of the new features added to bash-5.2 since
the release of bash-5.1. As always, the manual page (doc/bash.1) is
the place to look for complete descriptions.
1. New Features in Bash
a. The bash malloc returns memory that is aligned on 16-byte boundaries.
b. There is a new internal timer framework used for read builtin timeouts.
c. Rewrote the command substitution parsing code to call the parser recursively
and rebuild the command string from the parsed command. This allows better
syntax checking and catches errors much earlier. Along with this, if
command substitution parsing completes with here-documents remaining to be
read, the shell prints a warning message and reads the here-document bodies
from the current input stream.
d. The `ulimit' builtin now treats an operand remaining after all of the options
and arguments are parsed as an argument to the last command specified by
an option. This is for POSIX compatibility.
e. Here-document parsing now handles $'...' and $"..." quoting when reading the
here-document body.
f. The `shell-expand-line' and `history-and-alias-expand-line' bindable readline
commands now understand $'...' and $"..." quoting.
g. There is a new `spell-correct-word' bindable readline command to perform
spelling correction on the current word.
h. The `unset' builtin now attempts to treat arguments as array subscripts
without parsing or expanding the subscript, even when `assoc_expand_once'
is not set.
i. There is a default value for $BASH_LOADABLES_PATH in config-top.h.
j. Associative array assignment and certain instances of referencing (e.g.,
`test -v' now allow `@' and `*' to be used as keys.
k. Bash attempts to expand indexed array subscripts only once when executing
shell constructs and word expansions.
l. The `unset' builtin allows a subscript of `@' or `*' to unset a key with
that value for associative arrays instead of unsetting the entire array
(which you can still do with `unset arrayname'). For indexed arrays, it
removes all elements of the array without unsetting it (like `A=()').
m. Additional builtins (printf/test/read/wait) do a better job of not
parsing array subscripts if array_expand_once is set.
n. New READLINE_ARGUMENT variable set to numeric argument for readline commands
defined using `bind -x'.
o. The new `varredir_close' shell option causes bash to automatically close
file descriptors opened with {var}<fn and other styles of varassign
redirection unless they're arguments to the `exec' builtin.
p. The `$0' special parameter is now set to the name of the script when running
any (non-interactive) startup files such as $BASH_ENV.
q. The `enable' builtin tries to load a loadable builtin using the default
search path if `enable name' (without any options) attempts to enable a
non-existent builtin.
r. The `printf' builtin has a new format specifier: %Q. This acts like %q but
applies any specified precision to the original unquoted argument, then
quotes and outputs the result.
s. The new `noexpand_translations' option controls whether or not the translated
output of $"..." is single-quoted.
t. There is a new parameter transformation operator: @k. This is like @K, but
expands the result to separate words after word splitting.
u. There is an alternate array implementation, selectable at `configure' time,
that optimizes access speed over memory use (use the new configure
--enable-alt-array-implementation option).
v. If an [N]<&WORD- or [N]>&WORD- redirection has WORD expand to the empty
string, treat the redirection as [N]<&- or [N]>&- and close file descriptor
N (default 0).
w. Invalid parameter transformation operators are now invalid word expansions,
and so cause fatal errors in non-interactive shells.
x. New shell option: patsub_replacement. When enabled, a `&' in the replacement
string of the pattern substitution expansion is replaced by the portion of
the string that matched the pattern. Backslash will escape the `&' and
insert a literal `&'.
y. `command -p' no longer looks in the hash table for the specified command.
z. The new `--enable-translatable-strings' option to `configure' allows $"..."
support to be compiled in or out.
aa. The new `globskipdots' shell option forces pathname expansion never to
return `.' or `..' unless explicitly matched. It is enabled by default.
bb. Array references using `@' and `*' that are the value of nameref variables
(declare -n ref='v[@]' ; echo $ref) no longer cause the shell to exit if
set -u is enabled and the array (v) is unset.
cc. There is a new bindable readline command name:
`vi-edit-and-execute-command'.
dd. In posix mode, the `printf' builtin checks for the `L' length modifier and
uses long double for floating point conversion specifiers if it's present,
double otherwise.
ee. The `globbing' completion code now takes the `globstar' option into account.
ff. `suspend -f' now forces the shell to suspend even if job control is not
currently enabled.
gg. Since there is no `declare -' equivalent of `local -', make sure to use
`local -' in the output of `local -p'.
|
|
Changelog from AN-2022-09-18:
With great sadness we report the death of schilytools main author and
long time maintainer Jörg Schilling (1955-03-27--2021-10-10). Jörg, we
miss you! After his passing, development has been picked up by a group
of volunteers who would like to keep the project alive and well. Our
goal is to carefully preserve the portability and compatibility of this
project while extending it to new platforms and implementing new tools
and features that fit the tool set.
As a part of the change in management, the schilytools project has moved
from Sourceforge to Codeberg.
- general: Explain how to contribute and update README
- general: Add list of contributors
- all: Misc spelling fixes
Submitted by Friedhelm Mehnert.
- all: Update E-Mail address and project URL in many places.
Jörg's old joerg@schily.net address is defunct and so is his
postal address. As a part of an ongoing documentation cleanup,
these addresses have been replaced by our new project pages in
many locations.
Submitted by Nico Sonack.
- man pages: work around buggy syntax highlighting by adding
\" " comments into various places.
Submitted by Nico Sonack.
- RULES: Fix build on macOS 12.4
- RULES: add i386-openbsd-clang.rul
This should permit compilation on modern OpenBSD using clang as
the system compiler.
- autoconf: Work around clang bug in #pragma weak detection.
A clang compiler bug causing a crash in the configure test for
#pragma weak has been worked around, permitting use of weak
symbols when compiling with clang.
- tests: fix arm64/aarch64 architecture confusion on OpenBSD
Submitted by Nico Sonack.
|
|
Changelog from AN-2022-09-18:
With great sadness we report the death of schilytools main author and
long time maintainer Jörg Schilling (1955-03-27--2021-10-10). Jörg, we
miss you! After his passing, development has been picked up by a group
of volunteers who would like to keep the project alive and well. Our
goal is to carefully preserve the portability and compatibility of this
project while extending it to new platforms and implementing new tools
and features that fit the tool set.
As a part of the change in management, the schilytools project has moved
from Sourceforge to Codeberg.
- general: Explain how to contribute and update README
- general: Add list of contributors
- all: Misc spelling fixes
Submitted by Friedhelm Mehnert.
- all: Update E-Mail address and project URL in many places.
Jörg's old joerg@schily.net address is defunct and so is his
postal address. As a part of an ongoing documentation cleanup,
these addresses have been replaced by our new project pages in
many locations.
Submitted by Nico Sonack.
- man pages: work around buggy syntax highlighting by adding
\" " comments into various places.
Submitted by Nico Sonack.
- RULES: Fix build on macOS 12.4
- RULES: add i386-openbsd-clang.rul
This should permit compilation on modern OpenBSD using clang as
the system compiler.
- autoconf: Work around clang bug in #pragma weak detection.
A clang compiler bug causing a crash in the configure test for
#pragma weak has been worked around, permitting use of weak
symbols when compiling with clang.
- tests: fix arm64/aarch64 architecture confusion on OpenBSD
Submitted by Nico Sonack.
|
|
Today, we're releasing version 0.69 of Nu.
Note: this release is officially 0.69.1 because of a last-minute issue that was
found and fixed.
As part of this release, we also publish a set of optional plugins you can
install and use with Nu.
Themes of this release
Finishing the rework of modules and environment (WindSoilder, kubouch)
If you followed the development since the last release, you might have noticed
we successfully applied "the method of dead ends" pioneered by Jára Cimrman
"Somebody had to probe this dead end of human knowledge and announce to the
world: Not this way, friends!"
In short, the source-env experiment did not work out as planned. We hoped to
allow to call source-env with dynamic paths which, however, proved unfeasible.
Therefore, in this release, we remove all notions of source-env from Nushell
and instead use will be used activate the module's environment.
Any call to use will run the module's export-env { ... } block (if there is one)
and keep its environment. A positive side of it is that one call of use is
enough to import both commands/aliases and the environment, there is no need to
call two separate commands as we planned for source-env.
We're also keeping the source command for now, as well as the current config
file format. One reason is that we want to first investigate whether it is
possible to export also regular variables from modules and whether we can use
the module keyword inside modules. However, the use of modules is still
preferred over source as it will become the default way in the future.
Upcoming virtualenv activation changes (kubouch)
To reflect the recent changes to the module environment, we are changing the
virtualenv integration to use overlays. This will come in effect as soon as
this PR
gets merged. In practice, this means that instead of source activate.nu, you'll
use overlay use activate.nu, deactivate will work the same.
Under the hood, calling overlay use activate.nu will activate the activate
overlay and deactivate is just an alias for calling overlay hide activate.
If you wish, you can manually name the overlay, for example overlay use
activate.nu as spam, but then you'd need to remove it with overlay hide spam
instead of deactivate.
Grammar Experiments (JT)
We've recently also started working on some improvements to Nushell's syntax.
While these aren't part of Nushell 0.69, you can try this experimental syntax
in our new grammar
repo. Some experiments we're looking into:
Traditional function definition syntax
def foo(x: int) { ... }
Traditional function call syntax
foo(3)
And much more. We're hoping to talk more about these experiments as they mature.
Breaking changes
We found a regression in the correctness of the -d and -t flags of touch.
To get the release out, we've removed these flags, but hope to replace them
with correct implementations in the future.
We also removed support for duration literals above weeks, including month,
year, and decade literals. These were found to be confusing as it's unclear
what a duration of a month is (30 days? 31 days?)
The str collect command is now str join.
Next Steps
We've been progressing with our design towards 0.80 as outlined in this Notion
page.
Some time was spent trying out possible new syntax directions but we were not
confident to release them yet. In the next release we'll see a removal of
features deprecated in this release and we'll continue to push ahead for
the 0.80.
|
|
|
|
Add cmake build dep, reported by wiz@
|
|
v1.10.3
Performance Improvements
- git_commit: only use exact match for tag by default
v1.10.2
Bug Fixes
- git: upgrade gitoxide to v0.21
v1.10.1
Bug Fixes
- Disable multithreading in jwalk (via gitoxide) as workaround for #4251
v1.10.0
Features
- add bun module
- Add starship preset command
- Add support for blink, hidden, and strikethrough styles
- Add the ability to have some file extensions prevent a module from
triggering #4043
- Enable transience for Cmd and PowerShell
- replace git2 with git-repository
- Add folder detection to the k8s module
- support cargo workspace versions
- Add pipestatus_segment_format option to status module
Bug Fixes
- support official AWS_SHARED_CREDENTIALS_FILE variable
- count time spent on custom on 'when' command failure
Performance Improvements
- pulumi: allow disabling upwards discovery #4159
- rust: avoid calling rustup in more conditions #4174
v1.9.1
Bug Fixes
- regenerate changelog
v1.9.0
Features
- add Raku module
- winget: Add support for winget package manager
Bug Fixes
- character: Standadise Vim config names
- install: Have fixed a spacing issue in output
v1.8.0
Features
- Add support for Daml
- kubernetes: add user alias
- release: add windows msi installers
Bug Fixes
- escape text segments in meta variables
- fish: add proper vi mode detection for fish shell
- install: ignore tarfile ownership values when installing as root
- nu: don't use cygpath for starship binary path in init
- some typos
|
|
This is the 0.68.1 release of Nushell. It is a bugfix release of 0.68.
This addresses a bug with blocks and source-env.
For convenience, we are providing full builds for Windows, Linux, and macOS.
These are the "all extra features" builds, so be sure you have the requirements
to enable all capabilities:
https://www.nushell.sh/book/installation.html#dependencies
With this release, we have also statically linked OpenSSL into the binary to
make it easier to use across a larger range of platforms. If you encounter any
issue with this, please let us know.
|
|
|
|
This is a huge jump over several releases and it's impossible to list changes.
Please visit https://www.nushell.sh/blog/ for the details of every release.
Be aware that there are lots of changes across all aspects of Nushell.
- There's a new engine, new line editor, and new commands.
- Configuration files will not work and have to be re-written.
- Previous scripts will need to be updated, and you'll need to learn some of
the new ways of doing things in Nushell to get back to the same level of
comfort.
- Several shell improvements and behavior changes.
- There's also a new plugin architecture and quite a number of breaking
changes after fixing design flaws, cleaned-up the design, and rethought how
commands should work.
- New additional startup file (env.nu) which, sets up the environment that
you'll run Nushell in. As a result, you're able to set up important
environment variables like $env.NU_LIB_DIRS before 'config.nu' begins to run.
- Deeper integration with SQLite, new completion logic, introduction of
overlays, hooks, lazy dataframes, input overloading, input/output type,
new variable naming convention ...
So, please do read about the changes before.
|
|
Submmited by Paolo Vincenzo Olivo through private e-mail.
This a stability update incorporating crucial bug fixes.
Changes since version 1.0.1:
# Release 1.0.3
This point release mainly fixes the following:
- A bug in history expansion (set -H) where any use of the history
comment character caused processing to be aborted as if it were an
invalid history expansion. Affected e.g. 'echo ${#v}'.
- A bug in command line options processing that caused short-form option
equivalents on some built-in commands to be ignored after one use,
e.g., the new read -a equivalent of read -A.
- Ksh freezing or using excessive memory if HISTSIZE is assigned a
pathologically large value.
- A bug that caused ksh in the vi editor mode to crash or produce
invalid completions if ESC = was used at the beginning of a line.
# Release 1.0.2
This release fixes the interactive shell crashing when one of the
predefined aliases (currently 'history' and 'r') is redefined, whether
from a profile/kshrc script or manually. This crash occurred in two
scenarios:
1. when redefining and then unsetting a predefined alias;
2. when redefining a predefined alias and then executing a shell script
that does not begin with a #! path.
|
|
fish 3.5.1 (released July 20, 2022)
===================================
This release of fish introduces the following small enhancements:
- Cursor shaping for Vi mode is enabled by default in tmux, and will be used if the outer terminal is capable (:issue:`8981`).
- ``printf`` returns a better error when used with arguments interpreted as octal numbers (:issue:`9035`).
- ``history merge`` when in private mode is now an error, rather than wiping out other sessions' history (:issue:`9050`).
- The error message when launching a command that is built for the wrong architecture on macOS is more helpful (:issue:`9052`).
- Added completions for:
- ``choose`` (:issue:`9065`)
- ``expect`` (:issue:`9060`)
- ``navi`` (:issue:`9064`)
- ``qdbus`` (:issue:`9031`)
- ``reflector`` (:issue:`9027`)
- Improvements to some completions.
This release also fixes a number of problems identified in fish 3.5.0.
- Completing ``git blame`` or ``git -C`` works correctly (:issue:`9053`).
- On terminals that emit a ``CSI u`` sequence for :kbd:`Shift-Space`, fish inserts a space instead of printing an error. (:issue:`9054`).
- ``status fish-path`` on Linux-based platforms could print the path with a " (deleted)" suffix (such as ``/usr/bin/fish (deleted)``), which is now removed (:issue:`9019`).
- Cancelling an initial command (from fish's ``--init-command`` option) with :kbd:`Control-C` no longer prevents configuration scripts from running (:issue:`9024`).
- The job summary contained extra blank lines if the prompt used multiple lines, which is now fixed (:issue:`9044`).
- Using special input functions in bindings, in combination with ``and``/``or`` conditionals, no longer crashes (:issue:`9051`).
|
|
for hs-aeson, hs-vector
|
|
fish 3.5.0 (released June 16, 2022)
===================================
Notable improvements and fixes
------------------------------
- A new ``path`` builtin command to filter and transform paths (:issue:`7659`, :issue:`8958`). For example, to list all the separate extensions used on files in /usr/share/man (after removing one extension, commonly a ".gz")::
path filter -f /usr/share/man/** | path change-extension '' | path extension | path sort -u
- Tab (or any key bound to ``complete``) now expands wildcards instead of invoking completions, if there is a wildcard in the path component under the cursor (:issue:`954`, :issue:`8593`).
- Scripts can now catch and handle the SIGINT and SIGTERM signals, either via ``function --on-signal`` or with ``trap`` (:issue:`6649`).
Deprecations and removed features
---------------------------------
- The ``stderr-nocaret`` feature flag, introduced in fish 3.0 and enabled by default in fish 3.1, has been made read-only.
That means it is no longer possible to disable it, and code supporting the ``^`` redirection has been removed (:issue:`8857`, :issue:`8865`).
To recap: fish used to support ``^`` to redirect stderr, so you could use commands like::
test "$foo" -gt 8 ^/dev/null
to ignore error messages. This made the ``^`` symbol require escaping and quoting, and was a bit of a weird shortcut considering ``2>`` already worked, which is only one character longer.
So the above can simply become::
test "$foo" -gt 8 2>/dev/null
- The following feature flags have been enabled by default:
- ``regex-easyesc``, which makes ``string replace -r`` not do a superfluous round of unescaping in the replacement expression.
That means e.g. to escape any "a" or "b" in an argument you can use ``string replace -ra '([ab])' '\\\\$1' foobar`` instead of needing 8 backslashes.
This only affects the *replacement* expression, not the *match* expression (the ``'([ab])'`` part in the example).
A survey of plugins on GitHub did not turn up any affected code, so we do not expect this to affect many users.
This flag was introduced in fish 3.1.
- ``ampersand-nobg-in-token``, which means that ``&`` will not create a background job if it occurs in the middle of a word. For example, ``echo foo&bar`` will print "foo&bar" instead of running ``echo foo`` in the background and then starting ``bar`` as a second job.
Reformatting with ``fish_indent`` would already introduce spaces, turning ``echo foo&bar`` into ``echo foo & bar``.
This flag was introduced in fish 3.4.
To turn off these flags, add ``no-regex-easyesc`` or ``no-ampersand-nobg-in-token`` to :envvar:`fish_features`` and restart fish::
set -Ua fish_features no-regex-easyesc
Like ``stderr-nocaret``, they will eventually be made read-only.
- Most ``string`` subcommands no longer append a newline to their input if the input didn't have one (:issue:`8473`, :issue:`3847`)
- Fish's escape sequence removal (like for ``string length --visible`` or to figure out how wide the prompt is) no longer has special support for non-standard color sequences like from Data General terminals, e.g. the Data General Dasher D220 from 1984. This removes a bunch of work in the common case, allowing ``string length --visible`` to be much faster with unknown escape sequences. We don't expect anyone to have ever used fish with such a terminal (:issue:`8769`).
- Code to upgrade universal variables from fish before 3.0 has been removed. Users who upgrade directly from fish versions 2.7.1 or before will have to set their universal variables & abbreviations again. (:issue:`8781`)
- The meaning of an empty color variable has changed (:issue:`8793`). Previously, when a variable was set but empty, it would be interpreted as the "normal" color. Now, empty color variables cause the same effect as unset variables - the general highlighting variable for that type is used instead. For example::
set -g fish_color_command blue
set -g fish_color_keyword
would previously make keywords "normal" (usually white in a dark terminal). Now it'll make them blue. To achieve the previous behavior, use the normal color explicitly: ``set -g fish_color_keyword normal``.
This makes it easier to make self-contained color schemes that don't accidentally use color that was set before.
``fish_config`` has been adjusted to set known color variables that a theme doesn't explicitly set to empty.
- ``eval`` is now a reserved keyword, so it can't be used as a function name. This follows ``set`` and ``read``, and is necessary because it can't be cleanly shadowed by a function - at the very least ``eval set -l argv foo`` breaks. Fish will ignore autoload files for it, so left over ``eval.fish`` from previous fish versions won't be loaded.
- The git prompt in informative mode now defaults to skipping counting untracked files, as this was extremely slow. To turn it on, set :envvar:`__fish_git_prompt_showuntrackedfiles` or set the git config value "bash.showuntrackedfiles" to ``true`` explicitly (which can be done for individual repositories). The "informative+vcs" sample prompt already skipped display of untracked files, but didn't do so in a way that skipped the computation, so it should be quite a bit faster in many cases (:issue:`8980`).
- The ``__terlar_git_prompt`` function, used by the "Terlar" sample prompt, has been rebuilt as a configuration of the normal ``fish_git_prompt`` to ease maintenance, improve performance and add features (like reading per-repo git configuration). Some slight changes remain; users who absolutely must have the same behavior are encouraged to copy the old function (:issue:`9011`, :issue:`7918`, :issue:`8979`).
Scripting improvements
----------------------
- Quoted command substitution that directly follow a variable expansion (like ``echo "$var$(echo x)"``) no longer affect the variable expansion (:issue:`8849`).
- Fish now correctly expands command substitutions that are preceded by an escaped dollar (like ``echo \$(echo)``). This regressed in version 3.4.0.
- ``math`` can now handle underscores (``_``) as visual separators in numbers (:issue:`8611`, :issue:`8496`)::
math 5 + 2_123_252
- ``math``'s ``min`` and ``max`` functions now take a variable number of arguments instead of always requiring 2 (:issue:`8644`, :issue:`8646`)::
> math min 8,2,4
2
- ``read`` is now faster as the last process in a pipeline (:issue:`8552`).
- ``string join`` gained a new ``--no-empty`` flag to skip empty arguments (:issue:`8774`, :issue:`8351`).
- ``read`` now only triggers the ``fish_read`` event, not the ``fish_prompt`` event (:issue:`8797`). It was supposed to work this way in fish 3.2.0 and later, but both events were emitted.
- The TTY modes are no longer restored when non-interactive shells exit. This fixes wrong tty modes in pipelines with interactive commands. (:issue:`8705`).
- Some functions shipped with fish printed error messages to standard output, but they now they rightly go to standard error (:issue:`8855`).
- ``jobs`` now correctly reports CPU usage as a percentage, instead of as a number of clock ticks (:issue:`8919`).
- ``process-exit`` events now fire when the process exits even if the job has not yet exited, fixing a regression in 3.4.1 (:issue:`8914`).
Interactive improvements
------------------------
- Fish now reports a special error if a command wasn't found and there is a non-executable file by that name in :envvar:`PATH` (:issue:`8804`).
- ``less`` and other interactive commands would occasionally be stopped when run in a pipeline with fish functions; this has been fixed (:issue:`8699`).
- Case-changing autosuggestions generated mid-token now correctly append only the suffix, instead of duplicating the token (:issue:`8820`).
- ``ulimit`` learned a number of new options for the resource limits available on Linux, FreeBSD ande NetBSD, and returns a specific warning if the limit specified is not available on the active operating system (:issue:`8823`, :issue:`8786`).
- The ``vared`` command can now successfully edit variables named "tmp" or "prompt" (:issue:`8836`, :issue:`8837`).
- ``time`` now emits an error if used after the first command in a pipeline (:issue:`8841`).
- ``fish_add_path`` now prints a message for skipped non-existent paths when using the ``-v`` flag (:issue:`8884`).
- Since fish 3.2.0, pressing :kbd:`Control-D` while a command is running would end up inserting a space into the next commandline, which has been fixed (:issue:`8871`).
- A bug that caused multi-line prompts to be moved down a line when pasting or switching modes has been fixed (:issue:`3481`).
- The Web-based configuration system no longer strips too many quotes in the abbreviation display (:issue:`8917`, :issue:`8918`).
- Fish started with ``--no-config`` will now use the default keybindings (:issue:`8493`)
- When fish inherits a :envvar:`USER` environment variable value that doesn't correspond to the current effective user ID, it will now correct it in all cases (:issue:`8879`, :issue:`8583`).
- Fish sets a new :envvar:`EUID`` variable containing the current effective user id (:issue:`8866`).
- ``history search`` no longer interprets the search term as an option (:issue:`8853`)
- The status message when a job terminates should no longer be erased by a multiline prompt (:issue:`8817`)
New or improved bindings
^^^^^^^^^^^^^^^^^^^^^^^^
- The :kbd:`Alt-S` binding will now insert ``doas`` instead of ``sudo`` if necessary (:issue:`8942`).
- The ``kill-whole-line`` special input function now kills the newline preceeding the last line. This makes ``dd`` in vi-mode clear the last line properly.
- The new ``kill-inner-line`` special input function kills the line without any newlines, allowing ``cc`` in vi-mode to clear the line while preserving newlines (:issue:`8983`).
- On terminals that emit special sequences for these combinations, :kbd:`Shift-Space` is bound like :kbd:`Space`, and :kbd:`Ctrl-Return` is bound like :kbd:`Return` (:issue:`8874`).
Improved prompts
^^^^^^^^^^^^^^^^
- A new ``Astronaut`` prompt (:issue:`8775`), a multi-line prompt using plain text reminiscent of the Starship.rs prompt.
Completions
^^^^^^^^^^^
- Added completions for:
- ``archlinux-java`` (:issue:`8911`)
- ``apk`` (:issue:`8951`)
- ``brightnessctl`` (:issue:`8758`)
- ``efibootmgr`` (:issue:`9010`)
- ``fastboot`` (:issue:`8904`)
- ``optimus-manager`` (:issue:`8913`)
- ``rclone`` (:issue:`8819`)
- ``sops`` (:issue:`8821`)
- ``tuned-adm`` (:issue:`8760`)
- ``wg-quick`` (:issue:`8687`)
- ``complete`` can now be given multiple ``--condition`` options. They will be attempted in the order they were given, and only if all succeed will the completion be made available (as if they were connected with ``&&``). This helps with caching - fish's complete system stores the return value of each condition as long as the commandline doesn't change, so this can reduce the number of conditions that need to be evaluated (:issue:`8536`, :issue:`8967`).
Improved terminal support
^^^^^^^^^^^^^^^^^^^^^^^^^
- Working directory reporting is enabled for kitty (:issue:`8806`).
- Changing the cursor shape is now enabled by default in iTerm2 (:issue:`3696`).
For distributors
----------------
- libatomic is now correctly detected as necessary when building on RISC-V (:issue:`8850`, :issue:`8851`).
- In some cases, the build process found the wrong libintl on macOS. This has been corrected (:issue:`5244`).
- The paths for completions, functions, and configuration snippets now include
subdirectories ``fish/vendor_completions.d``, ``fish/vendor_functions.d``, and
``fish/vendor_conf.d`` (respectively) within ``XDG_DATA_HOME`` (or ``~/.local/share``
if not defined) (:issue:`8887`, :issue:`7816`).
|
|
|
|
This is now handled centrally via OPSYS_EXPLICIT_LIBDEPS support in libiconv
and gettext-lib.
|
|
Submitted by Paolo Vincenzo Olivo on pkgsrc-users.
## ksh 93u+m/1.0.1
This is an urgent bugfix release that removes an incorrect exec
optimization that was capable of terminating the execution of scripts
prematurely in certain corner cases. It is known to make the build
scripts of GNU binutils produce corrupted results if ksh is used as
/bin/sh. See #507 for more information.
No other breakage resulting from this bug is known yet, but other
breakage probably exists. Every 1.0.0 user should update to 1.0.1 ASAP.
## ksh 93u+m/1.0.0
Roughly a thousand bugs have been fixed, including many serious/critical
bugs. See the NEWS file for more information, and the git commit log for
complete documentation of every fix. Incompatible changes have been
minimised, but not at the expense of fixing bugs. For a list of
potentially incompatible changes, see src/cmd/ksh93/COMPATIBILITY.
Though there was a "no new features, bugfixes only" policy, some new
features were found necessary, either to fix serious design flaws or to
complete functionality that was evidently intended, but not finished.
Below is a summary of these new features.
New command line editor features:
- The forward-delete and End keys are now handled as expected in the
emacs and vi built-in line editors.
- In the vi and emacs line editors, repeat counts can now also be used for
arrow keys and the forward-delete key, e.g., <ESC> 7 <left-arrow> works.
- Various keys on extended PC keyboards are now handled as expected in the
emacs and vi built-in line editors.
New shell language features:
- Pathname expansion (a.k.a. globbing) now never matches the special names
'.' (current directory) and '..' (parent directory). This change makes a
pattern like .* useful; it now matches all hidden files (dotfiles) in the
current directory, without the harmful inclusion of '.' and '..'.
- Tilde expansion can now be extended or modified by defining a .sh.tilde.get
or .sh.tilde.set discipline function. See the manual for details.
- The &>file redirection shorthand (for >file 2>&1) is now available for all
scripts and interactive sessions and not only for profile/login scripts.
- Arithmetic expressions in native ksh mode no longer interpret a number
with a leading zero as octal in any context. Use 8#octalnumber instead
(e.g. 8#400 == 256). Arithmetic expressions now also behave identically
within and outside ((...)) and $((...)). If the POSIX mode is turned on,
a leading zero now denotes an octal number in all arithmetic contexts.
New features in built-in commands:
- Usage error messages now show the --help/--man self-documentation options.
- Path-bound built-ins (such as /opt/ast/bin/cat) can now be executed by
invoking the canonical path, so the following will now work as expected:
$ /opt/ast/bin/cat --version
version cat (AT&T Research) 2012-05-31
- 'cd' now supports an -e option that, when combined with -P, verifies
that $PWD is correct after changing directories; this helps detect
access permission problems. See:
https://www.austingroupbugs.net/view.php?id=253
- 'command -x' now looks for external commands only, skipping built-ins.
In addition, its xargs-like functionality no longer freezes the shell on
Linux and macOS, making it effectively a new feature on these systems.
- 'printf' now supports a -v option as in bash. This assigns formatted
output directly to variables, which is very fast and will not strip
final newline (\n) characters.
- 'redirect' now checks if all arguments are valid redirections before
performing them. If an error occurs, it issues an error message instead
of terminating the shell.
- 'return', when used to return from a function, can now return any
status value in the 32-bit signed integer range, like on zsh. However,
due to a traditional Unix kernel limitation, $? is still trimmed to its
least significant 8 bits whenever a shell or subshell exits.
- 'suspend' now refuses to suspend a login shell, as there is probably no
parent shell to return to and the login session would freeze.
- 'test'/'[' now supports all the same operators as [[ (including =~,
\<, \>) except for the different 'and'/'or' operators. Note that
'test'/'[' remains deprecated due to its unfixable pitfalls;
[[ ... ]] is recommended instead.
- 'times' now gives high precision output in a POSIX compliant format.
- 'type'/'whence': Two bash-like flags were backported from ksh 93v-:
- 'whence -P/type -P' is an alias to the existing -p flag.
- 'whence -t/type -t' will print only the type of a command in a
simple format that is designed to be easy to use for scripts.
- 'typeset' has a new '-g' flag that forces variables to be created or
modified at the global scope regardless of context, as on bash 4.2+.
- 'typeset' now gives an informative error message if an incompatible
combination of options is given.
- 'ulimit': Added three options inspired by bash:
- 'ulimit -k' sets the maximum number of kqueues.
- 'ulimit -P' sets the maximum number of pseudo-terminals.
- 'ulimit -R' sets the maximum time in microseconds a real-time process
can run before blocking.
Note that not all operating systems support the limits set by these options.
- 'whence -v/-a' now reports the location of autoloadable functions.
New features in shell options:
- When the -b/--notify shell option is on and the vi or emacs/gmacs shell
line editor is in use, 'Done' and similar notifications from completed
background jobs are now inserted directly above the line you're typing,
without affecting your command line display.
- A new --functrace long-form shell option causes the -x/--xtrace option's
state and the DEBUG trap action to be inherited by function scopes instead
of being reset to default. Changes made to them within a function scope
still do not propagate back to the parent scope. Similarly, this option
also causes the DEBUG trap action to be inherited by subshells.
- A new --globcasedetect shell option is added on operating systems where
we can check for a case-insensitive file system (currently Linux, macOS,
QNX 7.0+, and Windows/Cygwin). When this option is turned on, pathname
expansion (globbing), as well as tab completion on interactive shells,
automatically become case-insensitive depending on the file system.
This is separately determined for each pathname component.
- Enhancement to -G/--globstar: symbolic links to directories are now
followed if they match a normal (non-**) glob pattern. For example, if
'/lnk' is a symlink to a directory, '/lnk/**' and '/l?k/**' now work as
you would expect.
- The new --histreedit and --histverify options modify history expansion
(--histexpand). If --histreedit is on and a history expansion fails, the
command line is reloaded into the next prompt's edit buffer, allowing
corrections. If --histverify is on, the results of a history expansion are
not immediately executed but instead loaded into the next prompt's edit
buffer, allowing further changes.
- A new --nobackslashctrl shell option disables the special escaping
behaviour of the backslash character in the emacs and vi built-in editors.
Particularly in the emacs editor, this makes it much easier to go back,
insert a forgotten backslash into a command, and then continue editing
without having your next arrow key replace your backslash with garbage.
- A new --posix shell option has been added to ksh 93u+m that makes the
ksh language more compatible with other shells by following the POSIX
standard more closely. See the manual page for details. It is enabled by
default if ksh is invoked as sh, otherwise it is disabled by default.
|
|
|
|
Packaged in wip by Paolo Vincenzo Olivo.
Etsh provides two ports of the original /bin/sh from Version 6 (V6) UNIX
(circa 1975).
Etsh(1) is an enhanced, backward-compatible port of the V6 Thompson shell.
Tsh(1) is an unenhanced port of the shell, and glob(1) is a port of its
global command. Together, tsh and glob provide a user interface which
is backward compatible with that provided by the V6 Thompson shell and
global command, but without the obvious enhancements found in etsh.
The original Thompson shell was principally written by Ken Thompson
of Bell Labs.
This package also includes the following shell utilities:
- if(1) - conditional command (ported from V6 UNIX)
- goto(1) - transfer command (ported from V6 UNIX)
- fd2(1) - redirect from/to file descriptor 2
|
|
|
|
It is already `c' by default.
No functional change.
|
|
Simplify distname handling and downgrade to 1.0.0beta.2 to match actual
upstream version.
|
|
|