Skip to content
Please note that GitHub no longer supports Internet Explorer.

We recommend upgrading to the latest Microsoft Edge, Google Chrome, or Firefox.

Learn more
This is the AT&T Software Technology ast software download site from AT&T Research. The AT&T AST OpenSource Software Collection provides an overview and Practical Reusable UNIX Software provides a historical perspective. You can join the ast and uwin mailgroups, or monitor the mail archives. There is also an AT&T internal talk. The man page inde…
C Shell HTML Roff Meson Scilab Other
Branch: master
Clone or download
krader1961 Fix typo in the project name
The typo is harmless since the string is not used for anything but fix
it since it is wrong and confusing.
Latest commit 8cf92b2 Feb 1, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.copr Fix shellcheck warnings in .copr/prep.sh script Aug 27, 2018
.github/ISSUE_TEMPLATE Add non-empty about section in bug report template May 18, 2018
bin Fix shellcheck errors Dec 18, 2019
etc IWYU cleanup Jul 26, 2019
features Eliminate pointless external getconf use Jan 24, 2020
lib/package
packaging [packaging] Fix rpm builds on opensuse Sep 11, 2019
scripts Change default build type to "minsize" Jan 31, 2020
src Suppress false-positive shellcheck warnings Jan 26, 2020
.clang-format Don't allow slightly over long lines Jan 2, 2018
.clang-tidy Add a minimal .clang-tidy config file Feb 14, 2019
.cppcheck.rules Implement `bin/style` and `bin/lint` scripts Jan 17, 2018
.cppcheck.suppressions Implement an `eaccess()` fallback Oct 14, 2018
.editorconfig Implement config for clang-format and editors Nov 30, 2017
.gitignore Switch b_enum() from optget() to getopt_long() Sep 15, 2019
.oclint Relax some oclint thresholds Mar 8, 2019
.travis.yml Update Travis "fedora" config Oct 29, 2019
CHANGELOG.md Change default build type to "minsize" Jan 31, 2020
CONTRIBUTING.md Clarify how to run unit tests Jan 11, 2020
LICENSE Add LICENSE file with text from EPL-1.0 May 17, 2018
README.md Add comment regarding the need to keep "Version A" Nov 22, 2019
app-compat-travis.yml Adapt unit test to new Travis Fedora env Oct 31, 2019
config_ast.h.in Fix unit test build on NetBSD Dec 20, 2019
coverity-travis.yml Add python package needed to trigger Coverity Scan Aug 24, 2019
meson.build Fix typo in the project name Feb 1, 2020
meson_options.txt Add option to disable */shcomp test variants Dec 22, 2019

README.md

KSH93

This repository contains the AT&T Software Technology (AST) toolkit from AT&T Research. As of November 2017 the development focus has been shifted to the ksh (or ksh93) command and supporting code required to build it.

The non-ksh code of the AST project is no longer being actively maintained. If you are interested in the non-ksh code see below for details on which branches contain the full AST code base.

The project only supports systems where the compiler and underlying hardware is ASCII compatible. This includes Linux on IBM zSeries but not z/OS. The nascent, incomplete, support for EBCDIC has been removed. See issue #742.

Building Korn shell

Building ksh requires the Meson build system. To build ksh execute these commands from the project root directory:

meson build
ninja -C build

You can add a --prefix flag followed by a path to the meson build command to specify where the binaries and libraries are installed. The default is /usr/local.

Installing

The ksh executable, helper libraries and man page can be installed with:

ninja -C build install

Getting KornShell

Linux

Latest builds for Red Hat Enterprise Linux (CentOS) and Fedora can be found in Copr.

Latest builds for openSUSE and Ubuntu can be found in OBS.

See full list of distros that ship packages for current development version.

Windows

TBD

macOS

Using MacPorts, the latest stable version can be installed using:

sudo port install ksh

Alternately, a development version can be installed using:

sudo port install ksh-devel

Versioning

We have switched from the legacy versioning scheme to semantic versioning. The first release after the last stable, ksh93u+, release is version 2020.0.0 which has numeric version number 20200000. This means you can still evaluate $KSH_VERSION or ${.sh.version} in numeric context to determine if the current shell is older or newer than a specific release (e.g., 20120801 for the ksh93u+ release).

If the shell is built without Git metadata a hardcoded value is used. That value will be one of two things. If building from a stable release branch it will be whatever value was assigned to that branch; e.g., 2020.0.1. If building from the master, experimental, branch it will be the most recent major release number and 99 for the minor and patch levels; e.g., 2020.99.99. This should serve as a warning that you don't really know what commit was used when building ksh.

Contributing changes to the source code

See the contributing guidelines for information about code style, unit tests, and other topics of interest to anyone who wants to modify the source.

Guidelines for Packagers

See the guidelines for downstream package maintainers here.

Coverity Scan

Latest results of coverity scan can be viewed here.

Test Coverage

A code coverage report can be viewed here for GCC on Linux, and here for LLVM/clang on macOS.

Working with the full AST source

Warning: Running test cases through the legacy test script may wipe out your home directory (See #477). This has been fixed in current development version.

Full AST source code is available under the 2012-08-01-master and 2016-01-10-beta branches (see below for more details). Bug fixes to these branches are welcome but they are otherwise under low maintenance.

The full AST code includes many tools and libraries, like KSH, NMAKE, SFIO, VMALLOC, VCODEX, etc. It also includes efficient replacements for a lot of the POSIX tools. It was designed to be portable across many UNIX systems and also works under UWIN on Microsoft Windows (see UWIN repo on GitHub under att/uwin).

This software is used to build itself, using NMAKE. After cloning this repo, cd to the top directory of it and run:

./bin/package make

NOTE: That build command only applies to the legacy branches that include the entire AST source. It does not apply to the current master branch that is focused solely on the ksh command and uses the Meson build system.

Almost all the tools in this package (including the bin/package script) are self-documenting; run --man (or --html) for the man page for the tool.

(If you were used to the old AST packaging mechanism, on www.research.att.com, this repo is equivalent to downloading the INIT and ast-open packages and running: ./bin/package read on them).

Branches

The master branch contains the current development version of ksh93. It only contains source code for ksh93 and the libraries required to build it.

The 2012-08-01-master branch contains the last stable release, ksh93u+, of full AST source code. It contains one cherry-picked change to allow building on Linux.

The 2016-01-10-beta branch contains the last beta release, ksh93v-, of full AST source code plus a number of patches that were later added on top of it. Changes for the legacy AST project are normally merged to this branch.

The gh-pages branch will probably be removed. It contains files needed to generate the static AST project page hosted by GitHub. See https://help.github.com/articles/what-is-github-pages/ for more info.

Licensing

This section needs more detail and clarity. The original README document said the following:

Each package is covered by one of the license files

lib/package/LICENSES/

where is the license type for the package. At the top of each license file is a URL; the license covers all software that refers to this URL. For details run

bin/package license []

Any archives, distributions or packages made from source or binaries covered by license(s) must contain the corresponding license file(s).

Contact Us

The primary mechanism for interacting with this project is the GitHub project by opening issues and pull-requests and watching the project.

IRC

Use #ksh channel on freenode to discuss about AT&T KornShell and related variants.

Gitter

ksh93/users is the Gitter chatroom for AT&T KornShell users.

Mailing lists

You can track announcements and ask question or report problems at korn-shell@googlegroups.com or https://groups.google.com/d/forum/korn-shell as an alternative to watching this Github project.

Archives of the AST mailing lists (which is mostly about ksh) are available at: https://marc.info/?l=ast-developers and https://marc.info/?l=ast-users.

As of 2018-11-01 the AT&T hosted mailing lists no longer respond to email. Note that the precise date the mailing lists stopped working is unknown. That was simply the date it came to our attention. The last known message to both mailing lists was sent on 2018-03-15. Ironically, since you can't unsubscribe, they still send monthly reminders that you are subscribed.

You can’t perform that action at this time.