
{"id":17445,"date":"2018-11-22T19:32:38","date_gmt":"2018-11-22T19:32:38","guid":{"rendered":"http:\/\/www.beautifulwork.org\/?p=17445"},"modified":"2018-11-22T19:32:38","modified_gmt":"2018-11-22T19:32:38","slug":"a-bash-builtin-command-named-enable-to-enable-or-disable-bash-builtin-command","status":"publish","type":"post","link":"https:\/\/www.trueangle.org\/index.php\/2018\/11\/22\/a-bash-builtin-command-named-enable-to-enable-or-disable-bash-builtin-command\/","title":{"rendered":"A bash builtin command named  &#8220;enable&#8221; to enable or disable a bash builtin command"},"content":{"rendered":"<p>[bash light=&#8221;true&#8221;]<br \/>\n$command<br \/>\n$echo $?<br \/>\n0<br \/>\n$enable -n command<br \/>\n$command<br \/>\nbash: command: command not found<br \/>\n$echo $?<br \/>\n127<br \/>\n$enable command<br \/>\n$command<br \/>\n$enable -n enable<br \/>\n$enable<br \/>\nbash: enable: command not found<br \/>\n$<br \/>\n[\/bash]<br \/>\nRELATED SOURCE CODE EXPOSURE<br \/>\n[c light=&#8221;true&#8221;]<br \/>\n\/* Enable\/disable shell commands present in LIST.  If list is not specified,<br \/>\n   then print out a list of shell commands showing which are enabled and<br \/>\n   which are disabled. *\/<br \/>\nint<br \/>\nenable_builtin (list)<br \/>\n     WORD_LIST *list;<br \/>\n{<br \/>\n  int result, flags;<br \/>\n  int opt, filter;<br \/>\n#if defined (HAVE_DLOPEN) &amp;&amp; defined (HAVE_DLSYM)<br \/>\n  char *filename;<br \/>\n#endif<\/p>\n<p>  result = EXECUTION_SUCCESS;<br \/>\n  flags = 0;<\/p>\n<p>  reset_internal_getopt ();<br \/>\n  while ((opt = internal_getopt (list, &quot;adnpsf:&quot;)) != -1)<br \/>\n    {<br \/>\n      switch (opt)<br \/>\n\t{<br \/>\n\tcase &#8216;a&#8217;:<br \/>\n\t  flags |= AFLAG;<br \/>\n\t  break;<br \/>\n\tcase &#8216;n&#8217;:<br \/>\n\t  flags |= NFLAG;<br \/>\n\t  break;<br \/>\n\tcase &#8216;p&#8217;:<br \/>\n\t  flags |= PFLAG;<br \/>\n\t  break;<br \/>\n\tcase &#8216;s&#8217;:<br \/>\n\t  flags |= SFLAG;<br \/>\n\t  break;<br \/>\n\tcase &#8216;f&#8217;:<br \/>\n#if defined (HAVE_DLOPEN) &amp;&amp; defined (HAVE_DLSYM)<br \/>\n\t  flags |= FFLAG;<br \/>\n\t  filename = list_optarg;<br \/>\n\t  break;<br \/>\n#else<br \/>\n\t  builtin_error (_(&quot;dynamic loading not available&quot;));<br \/>\n\t  return (EX_USAGE);<br \/>\n#endif<br \/>\n#if defined (HAVE_DLCLOSE)<br \/>\n\tcase &#8216;d&#8217;:<br \/>\n\t  flags |= DFLAG;<br \/>\n\t  break;<br \/>\n#else<br \/>\n\t  builtin_error (_(&quot;dynamic loading not available&quot;));<br \/>\n\t  return (EX_USAGE);<br \/>\n#endif \/* HAVE_DLCLOSE *\/<br \/>\n\tCASE_HELPOPT;<br \/>\n\tdefault:<br \/>\n\t  builtin_usage ();<br \/>\n\t  return (EX_USAGE);<br \/>\n\t}<br \/>\n    }<\/p>\n<p>  list = loptend;<\/p>\n<p>#if defined (RESTRICTED_SHELL)<br \/>\n  \/* Restricted shells cannot load new builtins. *\/<br \/>\n  if (restricted &amp;&amp; (flags &amp; (FFLAG|DFLAG)))<br \/>\n    {<br \/>\n      sh_restricted ((char *)NULL);<br \/>\n      return (EXECUTION_FAILURE);<br \/>\n    }<br \/>\n#endif<\/p>\n<p>  if (list == 0 || (flags &amp; PFLAG))<br \/>\n    {<br \/>\n      filter = (flags &amp; AFLAG) ? (ENABLED | DISABLED)<br \/>\n\t\t\t       : (flags &amp; NFLAG) ? DISABLED : ENABLED;<\/p>\n<p>      if (flags &amp; SFLAG)<br \/>\n\tfilter |= SPECIAL;<\/p>\n<p>      list_some_builtins (filter);<br \/>\n    }<br \/>\n#if defined (HAVE_DLOPEN) &amp;&amp; defined (HAVE_DLSYM)<br \/>\n  else if (flags &amp; FFLAG)<br \/>\n    {<br \/>\n      filter = (flags &amp; NFLAG) ? DISABLED : ENABLED;<br \/>\n      if (flags &amp; SFLAG)<br \/>\n\tfilter |= SPECIAL;<\/p>\n<p>      result = dyn_load_builtin (list, filter, filename);<br \/>\n#if defined (PROGRAMMABLE_COMPLETION)<br \/>\n      set_itemlist_dirty (&amp;it_builtins);<br \/>\n#endif<br \/>\n    }<br \/>\n#endif<br \/>\n#if defined (HAVE_DLCLOSE)<br \/>\n  else if (flags &amp; DFLAG)<br \/>\n    {<br \/>\n      while (list)<br \/>\n\t{<br \/>\n\t  opt = dyn_unload_builtin (list-&gt;word-&gt;word);<br \/>\n\t  if (opt == EXECUTION_FAILURE)<br \/>\n\t    result = EXECUTION_FAILURE;<br \/>\n\t  list = list-&gt;next;<br \/>\n\t}<br \/>\n#if defined (PROGRAMMABLE_COMPLETION)<br \/>\n      set_itemlist_dirty (&amp;it_builtins);<br \/>\n#endif<br \/>\n    }<br \/>\n#endif<br \/>\n  else<br \/>\n    {<br \/>\n      while (list)<br \/>\n\t{<br \/>\n\t  opt = enable_shell_command (list-&gt;word-&gt;word, flags &amp; NFLAG);<\/p>\n<p>\t  if (opt == EXECUTION_FAILURE)<br \/>\n\t    {<br \/>\n\t      sh_notbuiltin (list-&gt;word-&gt;word);<br \/>\n\t      result = EXECUTION_FAILURE;<br \/>\n\t    }<br \/>\n\t  list = list-&gt;next;<br \/>\n\t}<br \/>\n    }<br \/>\n  return (result);<br \/>\n}<br \/>\n[\/c]<br \/>\nSOURCE CODE TAKEN FROM DEBIAN Bash SOURCE<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[bash light=&#8221;true&#8221;] $command $echo $? 0 $enable -n command $command bash: command: command not found $echo $? 127 $enable command $command $enable -n enable $enable bash: enable: command not found $ [\/bash] RELATED SOURCE CODE EXPOSURE [c light=&#8221;true&#8221;] \/* Enable\/disable shell commands present in LIST. If list is not specified, then print out a list &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.trueangle.org\/index.php\/2018\/11\/22\/a-bash-builtin-command-named-enable-to-enable-or-disable-bash-builtin-command\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;A bash builtin command named  &#8220;enable&#8221; to enable or disable a bash builtin command&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7,8,91],"tags":[457,508,710],"_links":{"self":[{"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/posts\/17445"}],"collection":[{"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/comments?post=17445"}],"version-history":[{"count":0,"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/posts\/17445\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/media?parent=17445"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/categories?post=17445"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/tags?post=17445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}