busybox-w32 version FRP-5181-g5c1a3b00e was released on 2023-08-18. It is the current release. For other release notes see:
Some things to note:
As to actually using the binary:
~ $ busybox | head -2 BusyBox v1.37.0-FRP-5181-g5c1a3b00e (2023-08-18 12:18:42 BST) (mingw64-gcc 12.2.1-8.fc38; mingw64-crt 10.0.0-4.fc38; glob; Unicode)
Unicode support is largely the work of Avi Halachmi (@avih on GitHub), to whom all praise should be addressed. (Complaints, blame and other invective should fall to me, as usual ;-)
BB_OVERRIDE_APPLETS
was introduced in
release FRP-4716 as a way to
replace internal applets with external commands. This release extends
the feature:
This setting:
export BB_OVERRIDE_APPLETS=";make"results in the internal
make
applet being used only if
no external make
binary is present on PATH
.
(GitHub issue #329)
The winxp
option affects the import of environment variables
by the shell. Since Windows XP is particularly fussy about the presence of
backslashes in environment variables the winxp
option was
added to prevent backslashes from being converted into forward slashes
on import.
winxp
could only be set with the
-X
command line option, which had be the first provided.
These restrictions have been lifted: winxp
can be
altered from within a shell with the set
built-in and
-X
no longer has be the first item on the command line.
winxp
within a shell will switch
between forward slashes and backslashes in shell variables, but only in
those variables which were imported from a native Windows environment.
This requires the shell to track the origin of its variables. This
tracking persists in a subshell but not when the variables are exported
back to the environment of a new process.
The noconsole
option tries to hide the console window that
appears when a busybox-w32 shell is run from a GUI application.
noconsole
could only be set on the
shell command line; it can now be set (or unset) within a shell with the
set -o noconsole
and set +o noconsole
commands.
noconsole
is set the shell is minimised
rather than hidden.
(GitHub issues #322, #325)
ls
applet follows both Unix and Windows conventions
for hidden files:
ls -a
or ls -A
.
Some hidden files on Windows also have the 'system' attribute set. These
are likely to be of little interest to users and many of them have ugly,
long names. The display of such 'hidden system' files can be disabled by
giving the -a
or -A
options more than once.
For example, as ls -a -a
or ls -AA
.
Since duplicate options are ignored in other implementations of ls
this idiom is portable.
(GitHub issue #328)
examples/mswin-build
in the
source tree contains scripts to replicate how release and pre-release
binary are cross-compiled. (GitHub issue #330)
~/AppData/Local/Microsoft/WindowsApps
are a special type of reparse point which wasn't properly handled by
busybox-w32. They're now treated as a form of symbolic link by most applets.
lsattr
displays them with the A
attribute:
~/AppData/Local/Microsoft/WindowsApps $ lsattr python.exe A-------a-- python.exe(GitHub issue #327)
date
applet now supports the -s
option to set the system time. This requires elevated privileges.
diff
in release FRP-4882 gave
incorrect results when files with CRLF line-endings were compared and
the --binary
option wasn't used. This has been fixed, though
there are still inconsistencies when files with different line-endings are
compared. (GitHub issue #348)
jobs
and
trap
shell built-ins. Unfortunately, busybox-w32 users were
unable to benefit from these changes due to deficiencies in the shell.
These have been addressed so jobs
and trap
can now be used in the context of command substitution, process substitution
and pipelines. (GitHub issue #350)
awk
and support for maths in the shell.