{"id":297,"date":"2021-01-04T02:16:56","date_gmt":"2021-01-04T07:16:56","guid":{"rendered":"http:\/\/myblog.vindaloo.com\/?p=297"},"modified":"2021-01-04T02:18:05","modified_gmt":"2021-01-04T07:18:05","slug":"openbsds-ksh-adds-configurable-tab-completion","status":"publish","type":"post","link":"http:\/\/myblog.vindaloo.com\/?p=297","title":{"rendered":"OpenBSD&#8217;s ksh adds configurable tab completion"},"content":{"rendered":"\n<p>I saw a configuration for bash tab completion a few years ago and I&#8217;ve always wanted it for the korn shell. I use either the &#8220;true&#8221; ksh from AT&amp;T via David Korn or one of the variants that has sprung out of the pdksh project. OpenBSD&#8217;s ksh is a descendant of  pdksh. In a recent release of OpenBSD someone patched it to kludge configurable tab completion via environmental arrays. The article is here: https:\/\/www.vincentdelft.be\/post\/post_20210102<\/p>\n\n\n\n<p>This ksh is shells\/oksh in FreeBSD.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I saw a configuration for bash tab completion a few years ago and I&#8217;ve always wanted it for the korn shell. I use either the &#8220;true&#8221; ksh from AT&amp;T via David Korn or one of the variants that has sprung out of the pdksh project. OpenBSD&#8217;s ksh is a descendant of pdksh. In a recent &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/myblog.vindaloo.com\/?p=297\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;OpenBSD&#8217;s ksh adds configurable tab completion&#8221;<\/span><\/a><\/p>\n","protected":false},"author":54,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,10,18],"tags":[],"class_list":["post-297","post","type-post","status-publish","format-standard","hentry","category-open-source","category-openbsd","category-unix"],"_links":{"self":[{"href":"http:\/\/myblog.vindaloo.com\/index.php?rest_route=\/wp\/v2\/posts\/297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/myblog.vindaloo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/myblog.vindaloo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/myblog.vindaloo.com\/index.php?rest_route=\/wp\/v2\/users\/54"}],"replies":[{"embeddable":true,"href":"http:\/\/myblog.vindaloo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=297"}],"version-history":[{"count":1,"href":"http:\/\/myblog.vindaloo.com\/index.php?rest_route=\/wp\/v2\/posts\/297\/revisions"}],"predecessor-version":[{"id":298,"href":"http:\/\/myblog.vindaloo.com\/index.php?rest_route=\/wp\/v2\/posts\/297\/revisions\/298"}],"wp:attachment":[{"href":"http:\/\/myblog.vindaloo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/myblog.vindaloo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=297"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/myblog.vindaloo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}