]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
commit bash-20080515 snapshot
authorChet Ramey <chet.ramey@case.edu>
Wed, 7 Dec 2011 14:23:48 +0000 (09:23 -0500)
committerChet Ramey <chet.ramey@case.edu>
Wed, 7 Dec 2011 14:23:48 +0000 (09:23 -0500)
27 files changed:
CWRU/CWRU.chlog
CWRU/CWRU.chlog~
MANIFEST
MANIFEST~
Makefile.in
Makefile.in~
bashline.c
bashline.c~
bashline.h
bashline.h~ [new file with mode: 0644]
builtins/break.def
builtins/break.def~
doc/bash.1
doc/bash.1~
lib/readline/display.c
lib/readline/display.c~
po/LINGUAS
po/lt.po [new file with mode: 0644]
shell.c
shell.c~
subst.c
support/checkbashisms [new file with mode: 0755]
tests/RUN-ONE-TEST
variables.c
variables.c~
variables.h
variables.h~

index e3c3596ae31ff75e3972d898d4a4e5e086a275c2..1f867449f8d3b5253ea90e6c9d7c178797fbb7d7 100644 (file)
@@ -15783,3 +15783,54 @@ variables.c
        - when reading the initial environment, don't create variables with
          names that are not valid shell identifiers.  Fixes bug reported by
          Stephane Chazleas <stephane_chazelas@yahoo.fr>
+
+                                  5/13
+                                  ----
+subst.c
+       - fix string_quote_removal to gracefully handle the case where a
+         backslash is the final character in the string (leaves the backslash
+         in place).  Fixes bug reported by Ian Robertson
+         <iroberts@u.washington.edu>
+
+                                  5/16
+                                  ----
+support/checkbashisms
+       - Perl script that purports to check for bash-specific features in a
+         shell script.  Lifted from Debian via ubuntu
+
+                                  5/20
+                                  ----
+lib/readline/display.c
+       - in update_line, when deciding whether or not to adjust _rl_last_c_pos
+         in a multibyte environment after printing the last line of a multiline
+         prompt with invisible characters on the first and last lines, use
+         the number of inivisible chars on the first line in the calculation
+         deciding whether or not we're past the last invisible character and
+         need to adjust the cursor position.  Old code used the number of
+         invisible chars on the last prompt line.  Fixes bug reported by
+         stuff@slinkp.com.
+       - in update_line, when fixing _rl_last_c_pos after drawing the first
+         line of the prompt, use the number of invisible chars on the first
+         line as the offset, instead of the total number of invisible chars
+
+                                  5/21
+                                  ----
+variables.c
+       - new function, reinit_special_variables(), a hook for special
+         vars that need their hook functions called when they're unset as
+         a result of the shell reinitializing itself to run a script
+
+shell.c
+       - shell_reinitialize now calls reinit_special_variables
+       - shell_reinitialize now calls bashline_reset
+
+variables.h
+       - new extern declaration for reinit_special_variables
+
+bashline.c
+       - new function, bashline_reset(), called when the shell reinitializes
+         in shell_reinitialize.  Right now, just resets
+         bash_readline_initialized to 0.
+
+bashline.h
+       - new extern declaration for bashline_reset()
index dac5a0956eb754e2a22cf7a1a64684beb8cadaac..ff2d394f726aa3fbf629beb11c2327cc3ea230a5 100644 (file)
@@ -15776,3 +15776,52 @@ execute_cmd.c
          executed by the `command' or `source/.' builtins if we are supposed
          to be ignoring the return value.  This is like `eval'.  Fixes bug
          reported by Hiroshi Fujishima <hirobo@tonteki.org>
+
+                                  5/10
+                                  ----
+variables.c
+       - when reading the initial environment, don't create variables with
+         names that are not valid shell identifiers.  Fixes bug reported by
+         Stephane Chazleas <stephane_chazelas@yahoo.fr>
+
+                                  5/13
+                                  ----
+subst.c
+       - fix string_quote_removal to gracefully handle the case where a
+         backslash is the final character in the string (leaves the backslash
+         in place).  Fixes bug reported by Ian Robertson
+         <iroberts@u.washington.edu>
+
+                                  5/16
+                                  ----
+support/checkbashisms
+       - Perl script that purports to check for bash-specific features in a
+         shell script.  Lifted from Debian via ubuntu
+
+                                  5/20
+                                  ----
+lib/readline/display.c
+       - in update_line, when deciding whether or not to adjust _rl_last_c_pos
+         in a multibyte environment after printing the last line of a multiline
+         prompt with invisible characters on the first and last lines, use
+         the number of inivisible chars on the first line in the calculation
+         deciding whether or not we're past the last invisible character and
+         need to adjust the cursor position.  Old code used the number of
+         invisible chars on the last prompt line.  Fixes bug reported by
+         stuff@slinkp.com.
+       - in update_line, when fixing _rl_last_c_pos after drawing the first
+         line of the prompt, use the number of invisible chars on the first
+         line as the offset, instead of the total number of invisible chars
+
+                                  5/21
+                                  ----
+variables.c
+       - new function, reinit_special_variables(), a hook for special
+         vars that need their hook functions called when they're unset as
+         a result of the shell reinitializing itself to run a script
+
+shell.c
+       - shell_reinitialize now calls reinit_special_variables
+
+variables.h
+       - new extern declaration for reinit_special_variables
index afed7617eea32d76866e6c4ee1123110f2a3ee2e..df394de4e18779fa258eef4010d322214e34dd66 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -498,6 +498,8 @@ po/hu.gmo           f
 po/hu.po               f
 po/ja.gmo              f
 po/ja.po               f
+po/lt.gmo              f
+po/lt.po               f
 po/nl.gmo              f
 po/nl.po               f
 po/pl.gmo              f
@@ -550,6 +552,7 @@ doc/fdl.texi        f
 doc/fdl.txt    f
 support/Makefile.in    f
 support/bashversion.c  f
+support/checkbashisms  f       755
 support/config.guess   f
 support/config.rpath   f       755
 support/config.sub     f
index 1d8de95bebe227ecffb1600433772607bbcd9143..8be34a8a322dc747970c1a5ddabfc193f39a2067 100644 (file)
--- a/MANIFEST~
+++ b/MANIFEST~
@@ -498,6 +498,8 @@ po/hu.gmo           f
 po/hu.po               f
 po/ja.gmo              f
 po/ja.po               f
+po/lt.gmo              f
+po/lt.po               f
 po/nl.gmo              f
 po/nl.po               f
 po/pl.gmo              f
@@ -806,7 +808,6 @@ tests/func.right    f
 tests/func1.sub                f
 tests/func2.sub                f
 tests/func3.sub                f
-tests/func4.sub                f
 tests/getopts.tests    f
 tests/getopts.right    f
 tests/getopts1.sub     f
@@ -860,6 +861,7 @@ tests/new-exp3.sub  f
 tests/new-exp4.sub     f
 tests/new-exp5.sub     f
 tests/new-exp6.sub     f
+tests/new-exp7.sub     f
 tests/new-exp.right    f
 tests/nquote.tests     f
 tests/nquote.right     f
index e6b0aa3d8304e5fab4a305d87ce8747ad07d9c38..8251d39fd7d6519cb5a63e05cc263984e5eccc18 100644 (file)
@@ -993,7 +993,7 @@ shell.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h arr
 shell.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
 shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
 shell.o: flags.h trap.h mailcheck.h builtins.h $(DEFSRC)/common.h
-shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h
+shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h bashline.h
 shell.o: ${GLOB_LIBSRC}/strmatch.h ${BASHINCDIR}/posixtime.h
 sig.o: config.h bashtypes.h
 sig.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
index 6dc595c9a8b80f1def53cd90ef36287bd525bc5e..e6b0aa3d8304e5fab4a305d87ce8747ad07d9c38 100644 (file)
@@ -1076,6 +1076,14 @@ arrayfunc.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
 arrayfunc.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
 arrayfunc.o: $(DEFSRC)/common.h
 arrayfunc.o: ${BASHINCDIR}/shmbutil.h
+assoc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
+assoc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h
+assoc.o: command.h ${BASHINCDIR}/stdc.h error.h
+assoc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h
+assoc.o: assoc.h hashlib.h
+assoc.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
+assoc.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
+assoc.o: $(DEFSRC)/common.h
 braces.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
 braces.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 braces.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
index 9e529cc2fe2a4f2977131f2ddb1d235cd2cb7299..4ff3590985543e9682248eedafb69d588b010d31 100644 (file)
@@ -331,7 +331,7 @@ enable_hostname_completion (on_or_off)
       free (rl_completer_word_break_characters);
       rl_completer_word_break_characters = nval;
     }
-
+itrace("enable_hostname_completion: rl_completer_word_break_characters = %s", rl_completer_word_break_characters);
   return (old_value);
 }
 
@@ -513,6 +513,12 @@ initialize_readline ()
   bash_readline_initialized = 1;
 }
 
+void
+bashline_reset ()
+{
+  bash_readline_initialized = 0;
+}
+
 /* On Sun systems at least, rl_attempted_completion_function can end up
    getting set to NULL, and rl_completion_entry_function set to do command
    word completion if Bash is interrupted while trying to complete a command
index 84f5f3df3eb1965a054c41626c2530ce84639817..798315446174cec740b649afc30fc49339143963 100644 (file)
@@ -225,7 +225,7 @@ int no_empty_command_completion;
 int force_fignore = 1;
 
 /* Perform spelling correction on directory names during word completion */
-int dircomplete_spelling = 1;
+int dircomplete_spelling = 0;
 
 static char *bash_completer_word_break_characters = " \t\n\"'@><=;|&(:";
 static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:";
@@ -331,7 +331,7 @@ enable_hostname_completion (on_or_off)
       free (rl_completer_word_break_characters);
       rl_completer_word_break_characters = nval;
     }
-
+itrace("enable_hostname_completion: rl_completer_word_break_characters = %s", rl_completer_word_break_characters);
   return (old_value);
 }
 
index eac5d3533bbb76673a25517901ba9b798dee4daa..cd84d879febace95ff0a88496a6d259fd09dde85 100644 (file)
@@ -28,6 +28,7 @@ extern int bash_readline_initialized;
 extern void posix_readline_initialize __P((int));
 extern int enable_hostname_completion __P((int));
 extern void initialize_readline __P((void));
+extern void bashline_reset __P((void));
 extern void bashline_reinitialize __P((void));
 extern int bash_re_edit __P((char *));
 
diff --git a/bashline.h~ b/bashline.h~
new file mode 100644 (file)
index 0000000..eac5d35
--- /dev/null
@@ -0,0 +1,49 @@
+/* bashline.h -- interface to the bash readline functions in bashline.c. */
+
+/* Copyright (C) 1993 Free Software Foundation, Inc.
+
+   This file is part of GNU Bash, the Bourne Again SHell.
+
+   Bash is free software; you can redistribute it and/or modify it under
+   the terms of the GNU General Public License as published by the Free
+   Software Foundation; either version 2, or (at your option) any later
+   version.
+
+   Bash is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or
+   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+   for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with Bash; see the file COPYING.  If not, write to the Free Software
+   Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+
+#if !defined (_BASHLINE_H_)
+#define _BASHLINE_H_
+
+#include "stdc.h"
+
+extern int bash_readline_initialized;
+
+extern void posix_readline_initialize __P((int));
+extern int enable_hostname_completion __P((int));
+extern void initialize_readline __P((void));
+extern void bashline_reinitialize __P((void));
+extern int bash_re_edit __P((char *));
+
+extern int bind_keyseq_to_unix_command __P((char *));
+
+extern char **bash_default_completion __P((const char *, int, int, int, int));
+
+/* Used by programmable completion code. */
+extern char *command_word_completion_function __P((const char *, int));
+extern char *bash_groupname_completion_function __P((const char *, int));
+extern char *bash_servicename_completion_function __P((const char *, int));
+
+extern char **get_hostname_list __P((void));
+extern void clear_hostname_list __P((void));
+
+extern char **bash_directory_completion_matches __P((const char *));
+extern char *bash_dequote_text __P((const char *));
+
+#endif /* _BASHLINE_H_ */
index 407b69367f7ea593d9cd1c344486bb6a05288a2e..76326f0a489db77b054b0c262dde9f5f61e8b0c6 100644 (file)
@@ -30,7 +30,7 @@ Exit a FOR, WHILE or UNTIL loop.  If N is specified, break N enclosing
 loops.
 
 Exit Status:
-The exit status is 0 unless the shell is not executing a loop. 
+The exit status is 0 unless N is not greater than or equal to 1.
 $END
 #include <config.h>
 
@@ -97,7 +97,7 @@ Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.
 If N is specified, resumes the Nth enclosing loop.
 
 Exit Status:
-The exit status is 0 unless the shell is not executing a loop. 
+The exit status is 0 unless N is not greater than or equal to 1.
 $END
 
 /* Set up to continue x levels, where x defaults to 1, but can be specified
index e5f8a9c81d0dfbf6aa307abfbe859e58339487bc..4f4c6c4b64c37ad394876841886431726518ddc3 100644 (file)
@@ -28,6 +28,9 @@ Exit for, while, or until loops.
 
 Exit a FOR, WHILE or UNTIL loop.  If N is specified, break N enclosing
 loops.
+
+Exit Status:
+The exit status is 0 unless N is not greater than or equal to 1.
 $END
 #include <config.h>
 
@@ -92,6 +95,9 @@ Resume for, while, or until loops.
 
 Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.
 If N is specified, resumes the Nth enclosing loop.
+
+Exit Status:
+The exit status is 0 unless the shell is not executing a loop. 
 $END
 
 /* Set up to continue x levels, where x defaults to 1, but can be specified
index dafaf84a30ea5f3296f6d5a7f3c530baaf68b1b0..f5207ff755350984dccfe098437f0197a0259d51 100644 (file)
@@ -6193,10 +6193,8 @@ loop.  If \fIn\fP is specified, break \fIn\fP levels.
 must be \(>= 1.  If
 .I n
 is greater than the number of enclosing loops, all enclosing loops
-are exited.  The return value is 0 unless the shell is not executing
-a loop when
-.B break
-is executed.
+are exited.
+The return value is 0 unless \fIn\fP is not greater than or equal to 1.
 .TP
 \fBbuiltin\fP \fIshell\-builtin\fP [\fIarguments\fP]
 Execute the specified shell builtin, passing it
@@ -6552,10 +6550,8 @@ is specified, resume at the \fIn\fPth enclosing loop.
 must be \(>= 1.  If
 .I n
 is greater than the number of enclosing loops, the last enclosing loop
-(the ``top-level'' loop) is resumed.  The return value is 0 unless the
-shell is not executing a loop when
-.B continue
-is executed.
+(the ``top-level'' loop) is resumed.
+The return value is 0 unless \fIn\fP is not greater than or equal to 1.
 .TP
 \fBdeclare\fP [\fB\-afFirtx\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
 .PD 0
index e7c5f73994d74803d9920a7135aa5ac34fbd15c7..dafaf84a30ea5f3296f6d5a7f3c530baaf68b1b0 100644 (file)
@@ -4793,6 +4793,12 @@ to display a screenful of possible completions at a time.
 .B print\-completions\-horizontally (Off)
 If set to \fBOn\fP, readline will display completions with matches
 sorted horizontally in alphabetical order, rather than down the screen.
+.TP 
+.B revert\-all\-at\-newline (Off)
+If set to \fBon\fP, readline will undo all changes to history lines 
+before returning when \fBaccept\-line\fP is executed.  By default,
+history lines may be modified and retain individual undo lists across
+calls to \fBreadline\fP.
 .TP
 .B show\-all\-if\-ambiguous (Off)
 This alters the default behavior of the completion functions.  If
index 24dbe839a03132fd39f3ca646e9ad70748f17171..8a83e121328e6af4551f092c8a9e9cda49f55834 100644 (file)
@@ -682,7 +682,7 @@ rl_redisplay ()
          prompts that exceed two physical lines?
          Additional logic fix from Edward Catmur <ed@catmur.co.uk> */
 #if defined (HANDLE_MULTIBYTE)
-      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0)
        {
          n0 = num;
           temp = local_prompt_len;
@@ -713,7 +713,7 @@ rl_redisplay ()
              
       inv_lbreaks[++newlines] = temp;
 #if defined (HANDLE_MULTIBYTE)
-      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0)
        lpos -= _rl_col_width (local_prompt, n0, num);
       else
 #endif
@@ -985,13 +985,17 @@ rl_redisplay ()
                  _rl_last_c_pos != o_cpos &&
                  _rl_last_c_pos > wrap_offset &&
                  o_cpos < prompt_last_invisible)
-               _rl_last_c_pos -= wrap_offset;
+               _rl_last_c_pos -= prompt_invis_chars_first_line;        /* XXX - was wrap_offset */
 
              else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth &&
                        (MB_CUR_MAX > 1 && rl_byte_oriented == 0) &&
                        cpos_adjusted == 0 &&
                        _rl_last_c_pos != o_cpos &&
+#if 0
                        _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - (wrap_offset-prompt_invis_chars_first_line)))
+#else
+                       _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line))
+#endif
                _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line);
                  
              /* If this is the line with the prompt, we might need to
index 3dad963ae86b9ae021aa3ce0386eff45c0b4e6e3..322fe2b1bc1b25bcba30db08959fc2e4427c3c76 100644 (file)
@@ -506,9 +506,13 @@ rl_redisplay ()
   int _rl_wrapped_multicolumn = 0;
 #endif
 
-  if (!readline_echoing_p)
+  if (_rl_echoing_p == 0)
     return;
 
+  /* Block keyboard interrupts because this function manipulates global
+     data structures. */
+  _rl_block_sigint ();  
+
   if (!rl_display_prompt)
     rl_display_prompt = "";
 
@@ -678,7 +682,7 @@ rl_redisplay ()
          prompts that exceed two physical lines?
          Additional logic fix from Edward Catmur <ed@catmur.co.uk> */
 #if defined (HANDLE_MULTIBYTE)
-      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0)
        {
          n0 = num;
           temp = local_prompt_len;
@@ -709,7 +713,7 @@ rl_redisplay ()
              
       inv_lbreaks[++newlines] = temp;
 #if defined (HANDLE_MULTIBYTE)
-      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0)
        lpos -= _rl_col_width (local_prompt, n0, num);
       else
 #endif
@@ -981,13 +985,17 @@ rl_redisplay ()
                  _rl_last_c_pos != o_cpos &&
                  _rl_last_c_pos > wrap_offset &&
                  o_cpos < prompt_last_invisible)
-               _rl_last_c_pos -= wrap_offset;
+               _rl_last_c_pos -= prompt_invis_chars_first_line;        /* XXX - was wrap_offset */
 
              else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth &&
                        (MB_CUR_MAX > 1 && rl_byte_oriented == 0) &&
                        cpos_adjusted == 0 &&
                        _rl_last_c_pos != o_cpos &&
-                       _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - (wrap_offset-prompt_invis_chars_first_line)))
+#if 0
+_rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - (wrap_offset-prompt_invis_chars_first_line)))
+#else
+_rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line))
+#endif
                _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line);
                  
              /* If this is the line with the prompt, we might need to
@@ -1233,6 +1241,8 @@ rl_redisplay ()
     else
       visible_wrap_offset = wrap_offset;
   }
+
+  _rl_release_sigint ();
 }
 
 /* PWP: update_line() is based on finding the middle difference of each
@@ -2458,7 +2468,7 @@ _rl_redisplay_after_sigwinch ()
 void
 _rl_clean_up_for_exit ()
 {
-  if (readline_echoing_p)
+  if (_rl_echoing_p)
     {
       _rl_move_vert (_rl_vis_botlin);
       _rl_vis_botlin = 0;
index 15e4132db96f3617e467dd78defe8025e5741696..b626240568c02640acb79d3625d895bcff19437c 100644 (file)
@@ -1,2 +1,2 @@
 # Set of available languages.
-en@quot en@boldquot af bg ca de eo es et fr hu ja nl pl pt_BR ro ru sk sv tr vi
+en@quot en@boldquot af bg ca de eo es et fr hu ja lt nl pl pt_BR ro ru sk sv tr vi
diff --git a/po/lt.po b/po/lt.po
new file mode 100644 (file)
index 0000000..5cdde2e
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,2527 @@
+# translation of bash-3.2.po to Lithuanian
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the bash package.
+#
+# Gintautas Miliauskas <gintas@akl.lt>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: bash-3.2\n"
+"POT-Creation-Date: 2006-10-23 17:20-0400\n"
+"PO-Revision-Date: 2008-03-14 22:41+0200\n"
+"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
+"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: arrayfunc.c:48
+msgid "bad array subscript"
+msgstr ""
+
+#: arrayfunc.c:362
+#, c-format
+msgid "%s: cannot assign to non-numeric index"
+msgstr ""
+
+#: bashhist.c:331
+#, c-format
+msgid "%s: cannot create: %s"
+msgstr "%s: nepavyko sukurti: %s"
+
+#: bashline.c:3030
+msgid "bash_execute_unix_command: cannot find keymap for command"
+msgstr ""
+
+#: bashline.c:3079
+#, c-format
+msgid "%s: first non-whitespace character is not `\"'"
+msgstr "%s: pirmas ne tarpo simbolis nėra „\"“"
+
+#: bashline.c:3108
+#, c-format
+msgid "no closing `%c' in %s"
+msgstr "nėra uždarančiojo „%c“ %s"
+
+#: bashline.c:3142
+#, c-format
+msgid "%s: missing colon separator"
+msgstr "%s: trūksta dvitaškio skirtuko"
+
+#: builtins/bind.def:194
+#, c-format
+msgid "`%s': invalid keymap name"
+msgstr "„%s“: netaisyklingas keymap'o pavadinimas"
+
+#: builtins/bind.def:233
+#, c-format
+msgid "%s: cannot read: %s"
+msgstr "%s: nepavyko perskaityti: %s"
+
+#: builtins/bind.def:248
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr ""
+
+#: builtins/bind.def:283
+#, c-format
+msgid "`%s': unknown function name"
+msgstr "„%s“: nežinomas funkcijos pavadinimas"
+
+#: builtins/bind.def:291
+#, c-format
+msgid "%s is not bound to any keys.\n"
+msgstr "%s nėra priskirtas jokiam klavišui.\n"
+
+#: builtins/bind.def:295
+#, c-format
+msgid "%s can be invoked via "
+msgstr "%s gali būti iškviestas su"
+
+#: builtins/break.def:128
+msgid "only meaningful in a `for', `while', or `until' loop"
+msgstr "prasminga tik „for“, „while“ arba „until“ cikle"
+
+#: builtins/caller.def:131
+msgid "Returns the context of the current subroutine call."
+msgstr ""
+
+#: builtins/caller.def:132 builtins/caller.def:136 builtins/pushd.def:666
+#: builtins/pushd.def:674 builtins/pushd.def:677 builtins/pushd.def:687
+#: builtins/pushd.def:691 builtins/pushd.def:695 builtins/pushd.def:698
+#: builtins/pushd.def:701 builtins/pushd.def:710 builtins/pushd.def:714
+#: builtins/pushd.def:718 builtins/pushd.def:721
+msgid " "
+msgstr " "
+
+#: builtins/caller.def:133
+msgid "Without EXPR, returns returns \"$line $filename\".  With EXPR,"
+msgstr ""
+
+#: builtins/caller.def:134
+msgid "returns \"$line $subroutine $filename\"; this extra information"
+msgstr ""
+
+#: builtins/caller.def:135
+msgid "can be used used to provide a stack trace."
+msgstr ""
+
+#: builtins/caller.def:137
+msgid "The value of EXPR indicates how many call frames to go back before the"
+msgstr ""
+
+#: builtins/caller.def:138
+msgid "current one; the top frame is frame 0."
+msgstr ""
+
+#: builtins/cd.def:204
+msgid "HOME not set"
+msgstr "HOME nenustatytas"
+
+#: builtins/cd.def:216
+msgid "OLDPWD not set"
+msgstr "OLDPWD nenustatytas"
+
+#: builtins/common.c:133 test.c:822
+msgid "too many arguments"
+msgstr "per daug argumentų"
+
+#: builtins/common.c:157 shell.c:474 shell.c:748
+#, c-format
+msgid "%s: option requires an argument"
+msgstr "%s: parametrui reikia argumento"
+
+#: builtins/common.c:164
+#, c-format
+msgid "%s: numeric argument required"
+msgstr "%s: reikia skaitinio argumento"
+
+#: builtins/common.c:171
+#, c-format
+msgid "%s: not found"
+msgstr "%s: nerasta"
+
+#: builtins/common.c:180 shell.c:761
+#, c-format
+msgid "%s: invalid option"
+msgstr "%s: nesamas parametras"
+
+#: builtins/common.c:187
+#, c-format
+msgid "%s: invalid option name"
+msgstr "%s: netaisyklingas parametro vardas"
+
+#: builtins/common.c:194 general.c:230 general.c:235
+#, c-format
+msgid "`%s': not a valid identifier"
+msgstr "`%s': netaisyklingas identifikatorius"
+
+#: builtins/common.c:201
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: netaisyklingas skaičius"
+
+#: builtins/common.c:208
+#, c-format
+msgid "%s: invalid signal specification"
+msgstr "%s: netaisyklinga signalo specifikacija"
+
+#: builtins/common.c:215
+#, c-format
+msgid "`%s': not a pid or valid job spec"
+msgstr "„%s“: ne pid'as ar taisyklinga darbo specifikacija"
+
+#: builtins/common.c:222 error.c:451
+#, c-format
+msgid "%s: readonly variable"
+msgstr "%s: kintamasis tik skaitymui"
+
+#: builtins/common.c:230
+#, c-format
+msgid "%s: %s out of range"
+msgstr "%s: %s išėjo už ribų"
+
+#: builtins/common.c:230 builtins/common.c:232
+msgid "argument"
+msgstr "argumentas"
+
+#: builtins/common.c:232
+#, c-format
+msgid "%s out of range"
+msgstr "%s už ribų"
+
+#: builtins/common.c:240
+#, c-format
+msgid "%s: no such job"
+msgstr "%s: nėra tokio darbo"
+
+#: builtins/common.c:248
+#, c-format
+msgid "%s: no job control"
+msgstr "%s: nėra darbų valdymo"
+
+#: builtins/common.c:250
+msgid "no job control"
+msgstr "nėra darbų valdymo"
+
+#: builtins/common.c:260
+#, c-format
+msgid "%s: restricted"
+msgstr "%s: apribota"
+
+#: builtins/common.c:262
+msgid "restricted"
+msgstr "apribota"
+
+#: builtins/common.c:270
+#, c-format
+msgid "%s: not a shell builtin"
+msgstr "%s: ne vidinė aplinkos komanda"
+
+#: builtins/common.c:276
+#, c-format
+msgid "write error: %s"
+msgstr "rašymo klaida: %s"
+
+#: builtins/common.c:481
+#, c-format
+msgid "%s: error retrieving current directory: %s: %s\n"
+msgstr "%s: klaida skaitant esamą aplanką: %s: %s\n"
+
+#: builtins/common.c:547 builtins/common.c:549
+#, c-format
+msgid "%s: ambiguous job spec"
+msgstr "%s: dviprasmis darbo aprašymas"
+
+#: builtins/complete.def:251
+#, c-format
+msgid "%s: invalid action name"
+msgstr "%s: netaisyklingas veiksmo pavadinimas"
+
+#: builtins/complete.def:381 builtins/complete.def:524
+#, c-format
+msgid "%s: no completion specification"
+msgstr "%s: nėra baigimo specifikacijos"
+
+#: builtins/complete.def:571
+msgid "warning: -F option may not work as you expect"
+msgstr "įspėjimas: parametras -F gali neveikti taip, kaip tikitės"
+
+#: builtins/complete.def:573
+msgid "warning: -C option may not work as you expect"
+msgstr "įspėjimas: parametras -C gali neveikti taip, kaip tikitės"
+
+#: builtins/declare.def:106
+msgid "can only be used in a function"
+msgstr "galima naudoti tik funkcijoje"
+
+#: builtins/declare.def:306
+msgid "cannot use `-f' to make functions"
+msgstr "negalima naudoti „-f“ funkcijoms kurti"
+
+#: builtins/declare.def:318 execute_cmd.c:4073
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: funkcija tik skaitymui"
+
+#: builtins/declare.def:406
+#, c-format
+msgid "%s: cannot destroy array variables in this way"
+msgstr "%s: negalima tokiu būdu sunaikinti masyvų kintamųjų"
+
+#: builtins/enable.def:128 builtins/enable.def:136
+msgid "dynamic loading not available"
+msgstr "dinaminis įkrovimas negalimas"
+
+#: builtins/enable.def:303
+#, c-format
+msgid "cannot open shared object %s: %s"
+msgstr "nepavyko atverti bendrojo objekto %s: %s"
+
+#: builtins/enable.def:326
+#, c-format
+msgid "cannot find %s in shared object %s: %s"
+msgstr "nepavyko rasti %s bendrajame objekte %s: %s"
+
+#: builtins/enable.def:450
+#, c-format
+msgid "%s: not dynamically loaded"
+msgstr "%s: nedinamiškai įkrauta"
+
+#: builtins/enable.def:465
+#, c-format
+msgid "%s: cannot delete: %s"
+msgstr "%s: nepavyko ištrinti: %s"
+
+#: builtins/evalfile.c:129 execute_cmd.c:3930 shell.c:1409
+#, c-format
+msgid "%s: is a directory"
+msgstr "%s: aplankas"
+
+#: builtins/evalfile.c:134
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: ne paprastas failas"
+
+#: builtins/evalfile.c:142
+#, c-format
+msgid "%s: file is too large"
+msgstr "%s: failas per didelis"
+
+#: builtins/exec.def:205
+#, c-format
+msgid "%s: cannot execute: %s"
+msgstr "%s: nepavyko paleisti: %s"
+
+#: builtins/exit.def:83
+msgid "not login shell: use `exit'"
+msgstr ""
+
+#: builtins/exit.def:111
+msgid "There are stopped jobs.\n"
+msgstr "Yra sustabdytų darbų.\n"
+
+#: builtins/fc.def:258
+msgid "no command found"
+msgstr "komandų nerasta"
+
+#: builtins/fc.def:328
+msgid "history specification"
+msgstr ""
+
+#: builtins/fc.def:349
+#, c-format
+msgid "%s: cannot open temp file: %s"
+msgstr "%s: nepavyko atverti laikinojo failo: %s"
+
+#: builtins/fg_bg.def:149
+#, c-format
+msgid "job %d started without job control"
+msgstr ""
+
+#: builtins/getopt.c:109
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: neleistinas parametras -- %c\n"
+
+#: builtins/getopt.c:110
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: parametrui reikia argumento -- %c\n"
+
+#: builtins/hash.def:84
+msgid "hashing disabled"
+msgstr ""
+
+#: builtins/hash.def:130
+#, c-format
+msgid "%s: hash table empty\n"
+msgstr "%s: maišos lentelė tuščia\n"
+
+#: builtins/help.def:108
+msgid "Shell commands matching keywords `"
+msgstr ""
+
+#: builtins/help.def:110
+msgid "Shell commands matching keyword `"
+msgstr ""
+
+#: builtins/help.def:138
+#, c-format
+msgid "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
+msgstr "nėra žinyno temų, atitinkančių „%s“. Bandykite „help help“, „man -k %s“ arba „info %s“."
+
+#: builtins/help.def:164
+#, c-format
+msgid "%s: cannot open: %s"
+msgstr "%s: nepavyko atverti: %s"
+
+#: builtins/help.def:182
+msgid ""
+"These shell commands are defined internally.  Type `help' to see this list.\n"
+"Type `help name' to find out more about the function `name'.\n"
+"Use `info bash' to find out more about the shell in general.\n"
+"Use `man -k' or `info' to find out more about commands not in this list.\n"
+"\n"
+"A star (*) next to a name means that the command is disabled.\n"
+"\n"
+msgstr ""
+
+#: builtins/history.def:150
+msgid "cannot use more than one of -anrw"
+msgstr "negalima naudoti daugiau negu vieno iš -anrw"
+
+#: builtins/history.def:182
+msgid "history position"
+msgstr ""
+
+#: builtins/history.def:400
+#, c-format
+msgid "%s: history expansion failed"
+msgstr ""
+
+#: builtins/jobs.def:99
+msgid "no other options allowed with `-x'"
+msgstr ""
+
+#: builtins/kill.def:187
+#, c-format
+msgid "%s: arguments must be process or job IDs"
+msgstr ""
+
+#: builtins/kill.def:250
+msgid "Unknown error"
+msgstr "Nežinoma klaida"
+
+#: builtins/let.def:94 builtins/let.def:119 expr.c:498 expr.c:513
+msgid "expression expected"
+msgstr "tikėtasi išraiškos"
+
+#: builtins/printf.def:339
+#, c-format
+msgid "`%s': missing format character"
+msgstr "„%s“: trūksta formato simbolio"
+
+#: builtins/printf.def:516
+#, c-format
+msgid "`%c': invalid format character"
+msgstr "„%c“: netaisyklingas formato simbolis"
+
+#: builtins/printf.def:722
+msgid "missing hex digit for \\x"
+msgstr "trūksta šešioliktainio skaitmens išraiškoje \\x"
+
+#: builtins/pushd.def:175
+msgid "no other directory"
+msgstr "nėra kito aplanko"
+
+#: builtins/pushd.def:442
+msgid "<no current directory>"
+msgstr "<nėra esamo aplanko>"
+
+#: builtins/pushd.def:663
+msgid "Display the list of currently remembered directories.  Directories"
+msgstr ""
+
+#: builtins/pushd.def:664
+msgid "find their way onto the list with the `pushd' command; you can get"
+msgstr ""
+
+#: builtins/pushd.def:665
+msgid "back up through the list with the `popd' command."
+msgstr ""
+
+#: builtins/pushd.def:667
+msgid "The -l flag specifies that `dirs' should not print shorthand versions"
+msgstr ""
+
+#: builtins/pushd.def:668
+msgid "of directories which are relative to your home directory.  This means"
+msgstr ""
+
+#: builtins/pushd.def:669
+msgid "that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag"
+msgstr ""
+
+#: builtins/pushd.def:670
+msgid "causes `dirs' to print the directory stack with one entry per line,"
+msgstr ""
+
+#: builtins/pushd.def:671
+msgid "prepending the directory name with its position in the stack.  The -p"
+msgstr ""
+
+#: builtins/pushd.def:672
+msgid "flag does the same thing, but the stack position is not prepended."
+msgstr ""
+
+#: builtins/pushd.def:673
+msgid "The -c flag clears the directory stack by deleting all of the elements."
+msgstr ""
+
+#: builtins/pushd.def:675
+msgid "+N   displays the Nth entry counting from the left of the list shown by"
+msgstr ""
+
+#: builtins/pushd.def:676 builtins/pushd.def:679
+msgid "     dirs when invoked without options, starting with zero."
+msgstr ""
+
+#: builtins/pushd.def:678
+msgid "-N   displays the Nth entry counting from the right of the list shown by"
+msgstr ""
+
+#: builtins/pushd.def:684
+msgid "Adds a directory to the top of the directory stack, or rotates"
+msgstr ""
+
+#: builtins/pushd.def:685
+msgid "the stack, making the new top of the stack the current working"
+msgstr ""
+
+#: builtins/pushd.def:686
+msgid "directory.  With no arguments, exchanges the top two directories."
+msgstr ""
+
+#: builtins/pushd.def:688
+msgid "+N   Rotates the stack so that the Nth directory (counting"
+msgstr ""
+
+#: builtins/pushd.def:689
+msgid "     from the left of the list shown by `dirs', starting with"
+msgstr ""
+
+#: builtins/pushd.def:690 builtins/pushd.def:694
+msgid "     zero) is at the top."
+msgstr ""
+
+#: builtins/pushd.def:692
+msgid "-N   Rotates the stack so that the Nth directory (counting"
+msgstr ""
+
+#: builtins/pushd.def:693
+msgid "     from the right of the list shown by `dirs', starting with"
+msgstr ""
+
+#: builtins/pushd.def:696
+msgid "-n   suppress the normal change of directory when adding directories"
+msgstr ""
+
+#: builtins/pushd.def:697
+msgid "     to the stack, so only the stack is manipulated."
+msgstr ""
+
+#: builtins/pushd.def:699
+msgid "dir  adds DIR to the directory stack at the top, making it the"
+msgstr ""
+
+#: builtins/pushd.def:700
+msgid "     new current working directory."
+msgstr ""
+
+#: builtins/pushd.def:702 builtins/pushd.def:722
+msgid "You can see the directory stack with the `dirs' command."
+msgstr ""
+
+#: builtins/pushd.def:707
+msgid "Removes entries from the directory stack.  With no arguments,"
+msgstr ""
+
+#: builtins/pushd.def:708
+msgid "removes the top directory from the stack, and cd's to the new"
+msgstr ""
+
+#: builtins/pushd.def:709
+msgid "top directory."
+msgstr ""
+
+#: builtins/pushd.def:711
+msgid "+N   removes the Nth entry counting from the left of the list"
+msgstr ""
+
+#: builtins/pushd.def:712
+msgid "     shown by `dirs', starting with zero.  For example: `popd +0'"
+msgstr ""
+
+#: builtins/pushd.def:713
+msgid "     removes the first directory, `popd +1' the second."
+msgstr ""
+
+#: builtins/pushd.def:715
+msgid "-N   removes the Nth entry counting from the right of the list"
+msgstr ""
+
+#: builtins/pushd.def:716
+msgid "     shown by `dirs', starting with zero.  For example: `popd -0'"
+msgstr ""
+
+#: builtins/pushd.def:717
+msgid "     removes the last directory, `popd -1' the next to last."
+msgstr ""
+
+#: builtins/pushd.def:719
+msgid "-n   suppress the normal change of directory when removing directories"
+msgstr ""
+
+#: builtins/pushd.def:720
+msgid "     from the stack, so only the stack is manipulated."
+msgstr ""
+
+#: builtins/read.def:210
+#, c-format
+msgid "%s: invalid timeout specification"
+msgstr ""
+
+#: builtins/read.def:233
+#, c-format
+msgid "%s: invalid file descriptor specification"
+msgstr "%s: netaisyklinga failo deskriptoriaus specifikacija"
+
+#: builtins/read.def:240
+#, c-format
+msgid "%d: invalid file descriptor: %s"
+msgstr "%d: netaisyklingas failo deskriptorius: %s"
+
+#: builtins/read.def:478
+#, c-format
+msgid "read error: %d: %s"
+msgstr "skaitymo klaida: %d: %s"
+
+#: builtins/return.def:63
+msgid "can only `return' from a function or sourced script"
+msgstr "galima grįžti (return) tik iš funkcijos ar scenarijaus"
+
+#: builtins/set.def:744
+msgid "cannot simultaneously unset a function and a variable"
+msgstr ""
+
+#: builtins/set.def:781
+#, c-format
+msgid "%s: cannot unset"
+msgstr ""
+
+#: builtins/set.def:788
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr ""
+
+#: builtins/set.def:799
+#, c-format
+msgid "%s: not an array variable"
+msgstr "%s: ne masyvo kintamasis"
+
+#: builtins/setattr.def:166
+#, c-format
+msgid "%s: not a function"
+msgstr "%s: ne funkcija"
+
+#: builtins/shift.def:66 builtins/shift.def:72
+msgid "shift count"
+msgstr "postūmių skaičius"
+
+#: builtins/shopt.def:227
+msgid "cannot set and unset shell options simultaneously"
+msgstr ""
+
+#: builtins/shopt.def:292
+#, c-format
+msgid "%s: invalid shell option name"
+msgstr ""
+
+#: builtins/source.def:115
+msgid "filename argument required"
+msgstr "reikia failo pavadinimo argumento"
+
+#: builtins/source.def:135
+#, c-format
+msgid "%s: file not found"
+msgstr "%s: failas nerastas"
+
+#: builtins/suspend.def:95
+msgid "cannot suspend"
+msgstr "nepavyko sustabdyti"
+
+#: builtins/suspend.def:105
+msgid "cannot suspend a login shell"
+msgstr ""
+
+#: builtins/type.def:232
+#, c-format
+msgid "%s is aliased to `%s'\n"
+msgstr "%s yra „%s“ sinonimas\n"
+
+#: builtins/type.def:253
+#, c-format
+msgid "%s is a shell keyword\n"
+msgstr "%s yra aplinkos raktinis žodis\n"
+
+#: builtins/type.def:273
+#, c-format
+msgid "%s is a function\n"
+msgstr "%s yra funkcija\n"
+
+#: builtins/type.def:298
+#, c-format
+msgid "%s is a shell builtin\n"
+msgstr "%s yra aplinkos vidinė komanda\n"
+
+#: builtins/type.def:319
+#, c-format
+msgid "%s is %s\n"
+msgstr "%s yra %s\n"
+
+#: builtins/type.def:339
+#, c-format
+msgid "%s is hashed (%s)\n"
+msgstr ""
+
+#: builtins/ulimit.def:352
+#, c-format
+msgid "%s: invalid limit argument"
+msgstr "%s: netaisyklingas limito argumentas"
+
+#: builtins/ulimit.def:378
+#, c-format
+msgid "`%c': bad command"
+msgstr "`%c': bloga komanda"
+
+#: builtins/ulimit.def:407
+#, c-format
+msgid "%s: cannot get limit: %s"
+msgstr "%s: nepavyko gauti limito: %s"
+
+#: builtins/ulimit.def:445
+#, c-format
+msgid "%s: cannot modify limit: %s"
+msgstr "%s: nepayko pakeisti limito: %s"
+
+#: builtins/umask.def:112
+msgid "octal number"
+msgstr "aštuntainis skaičius"
+
+#: builtins/umask.def:226
+#, c-format
+msgid "`%c': invalid symbolic mode operator"
+msgstr ""
+
+#: builtins/umask.def:281
+#, c-format
+msgid "`%c': invalid symbolic mode character"
+msgstr ""
+
+#: error.c:163
+#, c-format
+msgid "last command: %s\n"
+msgstr "paskutinė komanda: %s\n"
+
+#: error.c:171
+msgid "Aborting..."
+msgstr "Nutraukiama..."
+
+#: error.c:258
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: įspėjimas: "
+
+#: error.c:403
+msgid "unknown command error"
+msgstr "nežinoma komandos klaida"
+
+#: error.c:404
+msgid "bad command type"
+msgstr "blogas komandos tipas"
+
+#: error.c:405
+msgid "bad connector"
+msgstr "blogas jungtukas"
+
+#: error.c:406
+msgid "bad jump"
+msgstr ""
+
+#: error.c:444
+#, c-format
+msgid "%s: unbound variable"
+msgstr "%s: nepriskirtas kintamasis"
+
+#: eval.c:176
+msgid "\atimed out waiting for input: auto-logout\n"
+msgstr "\alaukiant įvedimo baigėsi laikas: automatiškai atsijungta\n"
+
+#: execute_cmd.c:474
+#, c-format
+msgid "cannot redirect standard input from /dev/null: %s"
+msgstr ""
+
+#: execute_cmd.c:1058
+#, c-format
+msgid "TIMEFORMAT: `%c': invalid format character"
+msgstr "TIMEFORMAT: „%c“: netaisyklingas formato simbolis"
+
+#: execute_cmd.c:3629
+#, c-format
+msgid "%s: restricted: cannot specify `/' in command names"
+msgstr "%s: apribota: negalima naudoti „/“ komandų pavadinimuose"
+
+#: execute_cmd.c:3717
+#, c-format
+msgid "%s: command not found"
+msgstr "%s: komanda nerasta"
+
+#: execute_cmd.c:3963
+#, c-format
+msgid "%s: %s: bad interpreter"
+msgstr "%s: %s: blogas interpretatorius"
+
+#: execute_cmd.c:4000
+#, c-format
+msgid "%s: cannot execute binary file"
+msgstr "%s: negalima vykdyti dvejetainių failų"
+
+#: execute_cmd.c:4112
+#, c-format
+msgid "cannot duplicate fd %d to fd %d"
+msgstr ""
+
+#: expr.c:241
+msgid "expression recursion level exceeded"
+msgstr "viršytas išraiškos rekursijos lygis"
+
+#: expr.c:265
+msgid "recursion stack underflow"
+msgstr "rekursijos steko atvirkštinis perpildymas"
+
+#: expr.c:376
+msgid "syntax error in expression"
+msgstr "sintaksės klaida išraiškoje"
+
+#: expr.c:416
+msgid "attempted assignment to non-variable"
+msgstr "bandymas priskirti ne kintamajam"
+
+#: expr.c:437 expr.c:442 expr.c:752
+msgid "division by 0"
+msgstr "dalyba iš 0"
+
+#: expr.c:468
+msgid "bug: bad expassign token"
+msgstr "klaida: bloga expassign leksema"
+
+#: expr.c:510
+msgid "`:' expected for conditional expression"
+msgstr "sąlygos išraiškoje tikėtasi „:“"
+
+#: expr.c:777
+msgid "exponent less than 0"
+msgstr "eksponentas mažesnis už 0"
+
+#: expr.c:822
+msgid "identifier expected after pre-increment or pre-decrement"
+msgstr ""
+
+#: expr.c:850
+msgid "missing `)'"
+msgstr "Trūksta „)“"
+
+#: expr.c:893 expr.c:1171
+msgid "syntax error: operand expected"
+msgstr "sintaksės klaida: tikėtasi operando"
+
+#: expr.c:1173
+msgid "syntax error: invalid arithmetic operator"
+msgstr "sintaksės klaida: netaisyklingas aritmetinis operatorius"
+
+#: expr.c:1251
+msgid "invalid number"
+msgstr "netaisyklingas skaičius"
+
+#: expr.c:1255
+msgid "invalid arithmetic base"
+msgstr "netaisyklingas aritmetinis pagrindas"
+
+#: expr.c:1275
+msgid "value too great for base"
+msgstr "per didelė pagrindo reikšmė"
+
+#: general.c:61
+msgid "getcwd: cannot access parent directories"
+msgstr "getcwd: nepavyko pasiekti aukštesnių aplankų"
+
+#: input.c:237
+#, c-format
+msgid "cannot allocate new file descriptor for bash input from fd %d"
+msgstr ""
+
+#: input.c:245
+#, c-format
+msgid "save_bash_input: buffer already exists for new fd %d"
+msgstr ""
+
+#: jobs.c:876
+#, c-format
+msgid "forked pid %d appears in running job %d"
+msgstr ""
+
+#: jobs.c:983
+#, c-format
+msgid "deleting stopped job %d with process group %ld"
+msgstr ""
+
+#: jobs.c:1378
+#, c-format
+msgid "describe_pid: %ld: no such pid"
+msgstr "describe_pid: %ld: tokio pid nėra"
+
+#: jobs.c:2061 nojobs.c:575
+#, c-format
+msgid "wait: pid %ld is not a child of this shell"
+msgstr ""
+
+#: jobs.c:2265
+#, c-format
+msgid "wait_for: No record of process %ld"
+msgstr "wait_for: nėra proceso %ld įrašo"
+
+#: jobs.c:2524
+#, c-format
+msgid "wait_for_job: job %d is stopped"
+msgstr "wait_for_job: darbas %d yra sustabdytas"
+
+#: jobs.c:2746
+#, c-format
+msgid "%s: job has terminated"
+msgstr "%s: darbas baigtas"
+
+#: jobs.c:2755
+#, c-format
+msgid "%s: job %d already in background"
+msgstr "%s: darbas %d jau fone"
+
+#: jobs.c:3546
+msgid "no job control in this shell"
+msgstr "šioje aplinkoje nėra darbų valdymo"
+
+#: lib/malloc/malloc.c:298
+#, c-format
+msgid "malloc: failed assertion: %s\n"
+msgstr "malloc: pažeista prielaida: %s\n"
+
+#: lib/malloc/malloc.c:314
+#, c-format
+msgid ""
+"\r\n"
+"malloc: %s:%d: assertion botched\r\n"
+msgstr ""
+"\r\n"
+"malloc: %s:%d: prielaida pažeista\r\n"
+
+#: lib/malloc/malloc.c:799
+msgid "malloc: block on free list clobbered"
+msgstr ""
+
+#: lib/malloc/malloc.c:876
+msgid "free: called with already freed block argument"
+msgstr ""
+
+#: lib/malloc/malloc.c:879
+msgid "free: called with unallocated block argument"
+msgstr ""
+
+#: lib/malloc/malloc.c:898
+msgid "free: underflow detected; mh_nbytes out of range"
+msgstr ""
+
+#: lib/malloc/malloc.c:904
+msgid "free: start and end chunk sizes differ"
+msgstr ""
+
+#: lib/malloc/malloc.c:1003
+msgid "realloc: called with unallocated block argument"
+msgstr ""
+
+#: lib/malloc/malloc.c:1018
+msgid "realloc: underflow detected; mh_nbytes out of range"
+msgstr ""
+
+#: lib/malloc/malloc.c:1024
+msgid "realloc: start and end chunk sizes differ"
+msgstr ""
+
+#: lib/malloc/table.c:176
+msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
+msgstr ""
+
+#: lib/malloc/table.c:183
+#, c-format
+msgid "register_alloc: %p already in table as allocated?\n"
+msgstr ""
+
+#: lib/malloc/table.c:219
+#, c-format
+msgid "register_free: %p already in table as free?\n"
+msgstr ""
+
+#: lib/malloc/watch.c:46
+msgid "allocated"
+msgstr "išskirta"
+
+#: lib/malloc/watch.c:48
+msgid "freed"
+msgstr "atlaisvinta"
+
+#: lib/malloc/watch.c:50
+msgid "requesting resize"
+msgstr "prašoma dydžio keitimo"
+
+#: lib/malloc/watch.c:52
+msgid "just resized"
+msgstr "tik ką pakeistas dydis"
+
+#: lib/malloc/watch.c:54
+msgid "bug: unknown operation"
+msgstr "klaida: nežinoma operacija"
+
+#: lib/malloc/watch.c:56
+#, c-format
+msgid "malloc: watch alert: %p %s "
+msgstr ""
+
+#: lib/sh/fmtulong.c:101
+msgid "invalid base"
+msgstr ""
+
+#: lib/sh/netopen.c:168
+#, c-format
+msgid "%s: host unknown"
+msgstr "%s: adresas nežinomas"
+
+#: lib/sh/netopen.c:175
+#, c-format
+msgid "%s: invalid service"
+msgstr "%s: netaisyklinga tarnyba"
+
+#: lib/sh/netopen.c:306
+#, c-format
+msgid "%s: bad network path specification"
+msgstr "%s: netaisyklingas tinklo kelias"
+
+#: lib/sh/netopen.c:346
+msgid "network operations not supported"
+msgstr "tinklo operacijos nepalaikomos"
+
+#: mailcheck.c:386
+msgid "You have mail in $_"
+msgstr "Turite laiškų $_"
+
+#: mailcheck.c:411
+msgid "You have new mail in $_"
+msgstr "Turite naujų laiškų $_"
+
+#: mailcheck.c:427
+#, c-format
+msgid "The mail in %s has been read\n"
+msgstr "Paštas %s perskaitytas\n"
+
+#: make_cmd.c:322
+msgid "syntax error: arithmetic expression required"
+msgstr "sintaksės klaida: reikia aritmetinės išraiškos"
+
+#: make_cmd.c:324
+msgid "syntax error: `;' unexpected"
+msgstr "sintaksės klaida: netikėtas „;“"
+
+#: make_cmd.c:325
+#, c-format
+msgid "syntax error: `((%s))'"
+msgstr "sintaksės klaida: „((%s))“"
+
+#: make_cmd.c:566
+#, c-format
+msgid "make_here_document: bad instruction type %d"
+msgstr "make_here_document: blogas instrukcijos tipas %d"
+
+#: make_cmd.c:741
+#, c-format
+msgid "make_redirection: redirection instruction `%d' out of range"
+msgstr "make_redirection: nukreipimo instrukcija „%d“ už ribų"
+
+#: parse.y:2759
+#, c-format
+msgid "unexpected EOF while looking for matching `%c'"
+msgstr "netikėta failo pabaiga ieškant atitinkamo „%c“"
+
+#: parse.y:3071
+msgid "unexpected EOF while looking for `]]'"
+msgstr "netikėta failo pabaiga ieškant „]]“"
+
+#: parse.y:3076
+#, c-format
+msgid "syntax error in conditional expression: unexpected token `%s'"
+msgstr "sintaksės klaida sąlygos išraiškoje: netikėta leksema „%s“"
+
+#: parse.y:3080
+msgid "syntax error in conditional expression"
+msgstr "sintaksės klaida sąlygos išraiškoje"
+
+#: parse.y:3158
+#, c-format
+msgid "unexpected token `%s', expected `)'"
+msgstr "netikėta leksema „%s“, tikėtasi „)“"
+
+#: parse.y:3162
+msgid "expected `)'"
+msgstr "tikėtasi „)“"
+
+#: parse.y:3190
+#, c-format
+msgid "unexpected argument `%s' to conditional unary operator"
+msgstr "netikėtas argumentas „%s“ sąlygos unariniam operatoriui"
+
+#: parse.y:3194
+msgid "unexpected argument to conditional unary operator"
+msgstr "netikėtas argumentas sąlygos unariniam operatoriui"
+
+#: parse.y:3234
+#, c-format
+msgid "unexpected token `%s', conditional binary operator expected"
+msgstr "netikėta leksema „%s“, tikėtasi sąlyginio binarinio operatoriaus"
+
+#: parse.y:3238
+msgid "conditional binary operator expected"
+msgstr "tikėtasi sąlygos binarinio operatoriaus"
+
+#: parse.y:3255
+#, c-format
+msgid "unexpected argument `%s' to conditional binary operator"
+msgstr "netikėtas argumentas „%s“ sąlygos binariniam operatoriui"
+
+#: parse.y:3259
+msgid "unexpected argument to conditional binary operator"
+msgstr "netikėtas argumentas sąlygos binariniam operatoriui"
+
+#: parse.y:3270
+#, c-format
+msgid "unexpected token `%c' in conditional command"
+msgstr "netikėta leksema „%c“ sąlygos komandoje"
+
+#: parse.y:3273
+#, c-format
+msgid "unexpected token `%s' in conditional command"
+msgstr "netikėta leksema „%s“ sąlygos komandoje"
+
+#: parse.y:3277
+#, c-format
+msgid "unexpected token %d in conditional command"
+msgstr "netikėta leksema %d sąlygos komandoje"
+
+#: parse.y:4523
+#, c-format
+msgid "syntax error near unexpected token `%s'"
+msgstr "sintaksės klaida prie netikėtos leksemos: „%s“"
+
+#: parse.y:4541
+#, c-format
+msgid "syntax error near `%s'"
+msgstr "sintaksės klaida prie „%s“"
+
+#: parse.y:4551
+msgid "syntax error: unexpected end of file"
+msgstr "sintaksės klaida: netikėta failo pabaiga"
+
+#: parse.y:4551
+msgid "syntax error"
+msgstr "sintaksės klaida"
+
+#: parse.y:4613
+#, c-format
+msgid "Use \"%s\" to leave the shell.\n"
+msgstr "Naudokite „%s“, jei norite išeiti iš ap.\n"
+
+#: parse.y:4775
+msgid "unexpected EOF while looking for matching `)'"
+msgstr "netikėta failo pabaiga ieškant atitinkamo „)“"
+
+#: pcomplete.c:1002
+#, c-format
+msgid "completion: function `%s' not found"
+msgstr "completion: funkcija „%s“ nerasta"
+
+#: pcomplib.c:179
+#, c-format
+msgid "progcomp_insert: %s: NULL COMPSPEC"
+msgstr "progcomp_insert: %s: NULL COMPSPEC"
+
+#: print_cmd.c:264
+#, c-format
+msgid "print_command: bad connector `%d'"
+msgstr "print_command: blogas jungtukas  „%d“"
+
+#: print_cmd.c:1236
+#, c-format
+msgid "cprintf: `%c': invalid format character"
+msgstr "cprintf: „%c“: netaisyklingas formato simbolis"
+
+#: redir.c:99
+msgid "file descriptor out of range"
+msgstr "failo deskriptorius už ribų"
+
+#: redir.c:141
+#, c-format
+msgid "%s: ambiguous redirect"
+msgstr "%s: ambiguous redirect"
+
+#: redir.c:145
+#, c-format
+msgid "%s: cannot overwrite existing file"
+msgstr "%s: negalima perrašyti egzistuojančio failo"
+
+#: redir.c:150
+#, c-format
+msgid "%s: restricted: cannot redirect output"
+msgstr "%s: apribota: negalima peradresuoti išvedimo"
+
+#: redir.c:155
+#, c-format
+msgid "cannot create temp file for here document: %s"
+msgstr "nepavyko sukurti laikino failo „here“ dokumentui: %s"
+
+#: redir.c:509
+msgid "/dev/(tcp|udp)/host/port not supported without networking"
+msgstr "/dev/(tcp|udp)/komp/prievadas nepalaikoma be tinklo"
+
+#: redir.c:965
+msgid "redirection error: cannot duplicate fd"
+msgstr "nukreipimo klaida: nepavyko dublikuoti fd"
+
+#: shell.c:309
+msgid "could not find /tmp, please create!"
+msgstr "nepavyko rasti /tmp, sukurkite šį aplanką!"
+
+#: shell.c:313
+msgid "/tmp must be a valid directory name"
+msgstr "/tmp turi būti taisyklingas aplanko pavadinimas"
+
+#: shell.c:850
+#, c-format
+msgid "%c%c: invalid option"
+msgstr "%c%c: netaisyklingas parametras"
+
+#: shell.c:1600
+msgid "I have no name!"
+msgstr "Neturiu vardo!"
+
+#: shell.c:1735
+#, c-format
+msgid ""
+"Usage:\t%s [GNU long option] [option] ...\n"
+"\t%s [GNU long option] [option] script-file ...\n"
+msgstr ""
+
+#: shell.c:1737
+msgid "GNU long options:\n"
+msgstr ""
+
+#: shell.c:1741
+msgid "Shell options:\n"
+msgstr ""
+
+#: shell.c:1742
+msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
+msgstr ""
+
+#: shell.c:1757
+#, c-format
+msgid "\t-%s or -o option\n"
+msgstr ""
+
+#: shell.c:1763
+#, c-format
+msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
+msgstr ""
+
+#: shell.c:1764
+#, c-format
+msgid "Type `%s -c help' for more information about shell builtin commands.\n"
+msgstr ""
+
+#: shell.c:1765
+msgid "Use the `bashbug' command to report bugs.\n"
+msgstr ""
+
+#: sig.c:557
+#, c-format
+msgid "sigprocmask: %d: invalid operation"
+msgstr "sigprocmask: %d: netaisyklinga operacija"
+
+#: subst.c:1160
+#, c-format
+msgid "bad substitution: no closing `%s' in %s"
+msgstr ""
+
+#: subst.c:2328
+#, c-format
+msgid "%s: cannot assign list to array member"
+msgstr ""
+
+#: subst.c:4265 subst.c:4281
+msgid "cannot make pipe for process substitution"
+msgstr ""
+
+#: subst.c:4312
+msgid "cannot make child for process substitution"
+msgstr ""
+
+#: subst.c:4357
+#, c-format
+msgid "cannot open named pipe %s for reading"
+msgstr ""
+
+#: subst.c:4359
+#, c-format
+msgid "cannot open named pipe %s for writing"
+msgstr ""
+
+#: subst.c:4367
+#, c-format
+msgid "cannout reset nodelay mode for fd %d"
+msgstr ""
+
+#: subst.c:4377
+#, c-format
+msgid "cannot duplicate named pipe %s as fd %d"
+msgstr ""
+
+#: subst.c:4552
+msgid "cannot make pipe for command substitution"
+msgstr ""
+
+#: subst.c:4588
+msgid "cannot make child for command substitution"
+msgstr ""
+
+#: subst.c:4605
+msgid "command_substitute: cannot duplicate pipe as fd 1"
+msgstr ""
+
+#: subst.c:5068
+#, c-format
+msgid "%s: parameter null or not set"
+msgstr "%s: parametras tuščias arba nenustatytas"
+
+#: subst.c:5342
+#, c-format
+msgid "%s: substring expression < 0"
+msgstr ""
+
+#: subst.c:6179
+#, c-format
+msgid "%s: bad substitution"
+msgstr ""
+
+#: subst.c:6255
+#, c-format
+msgid "$%s: cannot assign in this way"
+msgstr "$%s: negalima tokiu būdu priskirti"
+
+#: subst.c:7826
+#, c-format
+msgid "no match: %s"
+msgstr "nėra atitikmenų: %s"
+
+#: test.c:145
+msgid "argument expected"
+msgstr "tikėtasi argumento"
+
+#: test.c:154
+#, c-format
+msgid "%s: integer expression expected"
+msgstr "%s: tikėtasi skaitinės išraiškos"
+
+#: test.c:262
+msgid "`)' expected"
+msgstr "tikėtasi „)“"
+
+#: test.c:264
+#, c-format
+msgid "`)' expected, found %s"
+msgstr "tikėtasi „)“, rasta %s"
+
+#: test.c:279 test.c:688 test.c:691
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: tikėtasi unarinio operatoriaus"
+
+#: test.c:444 test.c:731
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: tikėtasi binarinio operatoriaus"
+
+#: test.c:806
+msgid "missing `]'"
+msgstr "trūksta „]“"
+
+#: trap.c:200
+msgid "invalid signal number"
+msgstr "netaisyklingas signalo numeris"
+
+#: trap.c:315
+#, c-format
+msgid "run_pending_traps: bad value in trap_list[%d]: %p"
+msgstr "run_pending_traps: bloga trap_list[%d] reikšmė: %p"
+
+#: trap.c:319
+#, c-format
+msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr ""
+
+#: trap.c:355
+#, c-format
+msgid "trap_handler: bad signal %d"
+msgstr "trap_handler: blogas signalas %d"
+
+#: variables.c:334
+#, c-format
+msgid "error importing function definition for `%s'"
+msgstr "klaida importuojant funkcijos apibrėžimą „%s“"
+
+#: variables.c:711
+#, c-format
+msgid "shell level (%d) too high, resetting to 1"
+msgstr ""
+
+#: variables.c:1670
+#, fuzzy
+msgid "make_local_variable: no function context at current scope"
+msgstr "make_local_variable: "
+
+#: variables.c:2813
+msgid "all_local_variables: no function context at current scope"
+msgstr ""
+
+#: variables.c:3030 variables.c:3039
+#, c-format
+msgid "invalid character %d in exportstr for %s"
+msgstr ""
+
+#: variables.c:3045
+#, c-format
+msgid "no `=' in exportstr for %s"
+msgstr ""
+
+#: variables.c:3472
+msgid "pop_var_context: head of shell_variables not a function context"
+msgstr ""
+
+#: variables.c:3485
+msgid "pop_var_context: no global_variables context"
+msgstr ""
+
+#: variables.c:3557
+msgid "pop_scope: head of shell_variables not a temporary environment scope"
+msgstr ""
+
+#: version.c:82
+msgid "Copyright (C) 2006 Free Software Foundation, Inc.\n"
+msgstr "Autorinės teisės (C) 2006 Free Software Foundation, Inc.\n"
+
+#: xmalloc.c:93
+#, c-format
+msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)"
+msgstr "xmalloc: nepavyko išskirti %lu baitų (%lu baitų išskirta)"
+
+#: xmalloc.c:95
+#, c-format
+msgid "xmalloc: cannot allocate %lu bytes"
+msgstr "xmalloc: nepavyko išskirti %lu baitų"
+
+#: xmalloc.c:115
+#, c-format
+msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
+msgstr ""
+
+#: xmalloc.c:117
+#, c-format
+msgid "xrealloc: cannot allocate %lu bytes"
+msgstr "xrealloc: nepavyko išskirti %lu baitų"
+
+#: xmalloc.c:151
+#, c-format
+msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
+msgstr ""
+
+#: xmalloc.c:153
+#, c-format
+msgid "xmalloc: %s:%d: cannot allocate %lu bytes"
+msgstr "xmalloc: %s:%d: nepavyko išskirti %lu baitų"
+
+#: xmalloc.c:175
+#, c-format
+msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
+msgstr ""
+
+#: xmalloc.c:177
+#, c-format
+msgid "xrealloc: %s:%d: cannot allocate %lu bytes"
+msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų"
+
+#: builtins.c:244
+msgid ""
+"`alias' with no arguments or with the -p option prints the list\n"
+"    of aliases in the form alias NAME=VALUE on standard output.\n"
+"    Otherwise, an alias is defined for each NAME whose VALUE is given.\n"
+"    A trailing space in VALUE causes the next word to be checked for\n"
+"    alias substitution when the alias is expanded.  Alias returns\n"
+"    true unless a NAME is given for which no alias has been defined."
+msgstr ""
+
+#: builtins.c:257
+msgid ""
+"Remove NAMEs from the list of defined aliases.  If the -a option is given,\n"
+"    then remove all alias definitions."
+msgstr ""
+
+#: builtins.c:266
+msgid ""
+"Bind a key sequence to a Readline function or a macro, or set\n"
+"    a Readline variable.  The non-option argument syntax is equivalent\n"
+"    to that found in ~/.inputrc, but must be passed as a single argument:\n"
+"    bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
+"    bind accepts the following options:\n"
+"      -m  keymap         Use `keymap' as the keymap for the duration of this\n"
+"                         command.  Acceptable keymap names are emacs,\n"
+"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
+"                         vi-command, and vi-insert.\n"
+"      -l                 List names of functions.\n"
+"      -P                 List function names and bindings.\n"
+"      -p                 List functions and bindings in a form that can be\n"
+"                         reused as input.\n"
+"      -r  keyseq         Remove the binding for KEYSEQ.\n"
+"      -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
+"    \t\t\t\tKEYSEQ is entered.\n"
+"      -f  filename       Read key bindings from FILENAME.\n"
+"      -q  function-name  Query about which keys invoke the named function.\n"
+"      -u  function-name  Unbind all keys which are bound to the named function.\n"
+"      -V                 List variable names and values\n"
+"      -v                 List variable names and values in a form that can\n"
+"                         be reused as input.\n"
+"      -S                 List key sequences that invoke macros and their values\n"
+"      -s                 List key sequences that invoke macros and their values\n"
+"                         in a form that can be reused as input."
+msgstr ""
+
+#: builtins.c:297
+msgid ""
+"Exit from within a FOR, WHILE or UNTIL loop.  If N is specified,\n"
+"    break N levels."
+msgstr ""
+
+#: builtins.c:304
+msgid ""
+"Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n"
+"    If N is specified, resume at the N-th enclosing loop."
+msgstr ""
+
+#: builtins.c:311
+msgid ""
+"Run a shell builtin.  This is useful when you wish to rename a\n"
+"    shell builtin to be a function, but need the functionality of the\n"
+"    builtin within the function itself."
+msgstr ""
+
+#: builtins.c:320
+msgid ""
+"Returns the context of the current subroutine call.\n"
+"    \n"
+"    Without EXPR, returns \"$line $filename\".  With EXPR,\n"
+"    returns \"$line $subroutine $filename\"; this extra information\n"
+"    can be used to provide a stack trace.\n"
+"    \n"
+"    The value of EXPR indicates how many call frames to go back before the\n"
+"    current one; the top frame is frame 0."
+msgstr ""
+
+#: builtins.c:334
+msgid ""
+"Change the current directory to DIR.  The variable $HOME is the\n"
+"    default DIR.  The variable CDPATH defines the search path for\n"
+"    the directory containing DIR.  Alternative directory names in CDPATH\n"
+"    are separated by a colon (:).  A null directory name is the same as\n"
+"    the current directory, i.e. `.'.  If DIR begins with a slash (/),\n"
+"    then CDPATH is not used.  If the directory is not found, and the\n"
+"    shell option `cdable_vars' is set, then try the word as a variable\n"
+"    name.  If that variable has a value, then cd to the value of that\n"
+"    variable.  The -P option says to use the physical directory structure\n"
+"    instead of following symbolic links; the -L option forces symbolic links\n"
+"    to be followed."
+msgstr ""
+
+#: builtins.c:350
+msgid ""
+"Print the current working directory.  With the -P option, pwd prints\n"
+"    the physical directory, without any symbolic links; the -L option\n"
+"    makes pwd follow symbolic links."
+msgstr ""
+
+#: builtins.c:358
+msgid "No effect; the command does nothing.  A zero exit code is returned."
+msgstr ""
+
+#: builtins.c:364
+msgid "Return a successful result."
+msgstr ""
+
+#: builtins.c:370
+msgid "Return an unsuccessful result."
+msgstr ""
+
+#: builtins.c:376
+msgid ""
+"Runs COMMAND with ARGS ignoring shell functions.  If you have a shell\n"
+"    function called `ls', and you wish to call the command `ls', you can\n"
+"    say \"command ls\".  If the -p option is given, a default value is used\n"
+"    for PATH that is guaranteed to find all of the standard utilities.  If\n"
+"    the -V or -v option is given, a string is printed describing COMMAND.\n"
+"    The -V option produces a more verbose description."
+msgstr ""
+
+#: builtins.c:387
+msgid ""
+"Declare variables and/or give them attributes.  If no NAMEs are\n"
+"    given, then display the values of variables instead.  The -p option\n"
+"    will display the attributes and values of each NAME.\n"
+"    \n"
+"    The flags are:\n"
+"    \n"
+"      -a\tto make NAMEs arrays (if supported)\n"
+"      -f\tto select from among function names only\n"
+"      -F\tto display function names (and line number and source file name if\n"
+"    \tdebugging) without definitions\n"
+"      -i\tto make NAMEs have the `integer' attribute\n"
+"      -r\tto make NAMEs readonly\n"
+"      -t\tto make NAMEs have the `trace' attribute\n"
+"      -x\tto make NAMEs export\n"
+"    \n"
+"    Variables with the integer attribute have arithmetic evaluation (see\n"
+"    `let') done when the variable is assigned to.\n"
+"    \n"
+"    When displaying values of variables, -f displays a function's name\n"
+"    and definition.  The -F option restricts the display to function\n"
+"    name only.\n"
+"    \n"
+"    Using `+' instead of `-' turns off the given attribute instead.  When\n"
+"    used in a function, makes NAMEs local, as with the `local' command."
+msgstr ""
+
+#: builtins.c:416
+msgid "Obsolete.  See `declare'."
+msgstr ""
+
+#: builtins.c:422
+msgid ""
+"Create a local variable called NAME, and give it VALUE.  LOCAL\n"
+"    can only be used within a function; it makes the variable NAME\n"
+"    have a visible scope restricted to that function and its children."
+msgstr ""
+
+#: builtins.c:431
+msgid ""
+"Output the ARGs.  If -n is specified, the trailing newline is\n"
+"    suppressed.  If the -e option is given, interpretation of the\n"
+"    following backslash-escaped characters is turned on:\n"
+"    \t\\a\talert (bell)\n"
+"    \t\\b\tbackspace\n"
+"    \t\\c\tsuppress trailing newline\n"
+"    \t\\E\tescape character\n"
+"    \t\\f\tform feed\n"
+"    \t\\n\tnew line\n"
+"    \t\\r\tcarriage return\n"
+"    \t\\t\thorizontal tab\n"
+"    \t\\v\tvertical tab\n"
+"    \t\\\\\tbackslash\n"
+"    \t\\0nnn\tthe character whose ASCII code is NNN (octal).  NNN can be\n"
+"    \t\t0 to 3 octal digits\n"
+"    \n"
+"    You can explicitly turn off the interpretation of the above characters\n"
+"    with the -E option."
+msgstr ""
+
+#: builtins.c:456
+msgid "Output the ARGs.  If -n is specified, the trailing newline is suppressed."
+msgstr ""
+
+#: builtins.c:463
+msgid ""
+"Enable and disable builtin shell commands.  This allows\n"
+"    you to use a disk command which has the same name as a shell\n"
+"    builtin without specifying a full pathname.  If -n is used, the\n"
+"    NAMEs become disabled; otherwise NAMEs are enabled.  For example,\n"
+"    to use the `test' found in $PATH instead of the shell builtin\n"
+"    version, type `enable -n test'.  On systems supporting dynamic\n"
+"    loading, the -f option may be used to load new builtins from the\n"
+"    shared object FILENAME.  The -d option will delete a builtin\n"
+"    previously loaded with -f.  If no non-option names are given, or\n"
+"    the -p option is supplied, a list of builtins is printed.  The\n"
+"    -a option means to print every builtin with an indication of whether\n"
+"    or not it is enabled.  The -s option restricts the output to the POSIX.2\n"
+"    `special' builtins.  The -n option displays a list of all disabled builtins."
+msgstr ""
+
+#: builtins.c:481
+msgid "Read ARGs as input to the shell and execute the resulting command(s)."
+msgstr ""
+
+#: builtins.c:487
+msgid ""
+"Getopts is used by shell procedures to parse positional parameters.\n"
+"    \n"
+"    OPTSTRING contains the option letters to be recognized; if a letter\n"
+"    is followed by a colon, the option is expected to have an argument,\n"
+"    which should be separated from it by white space.\n"
+"    \n"
+"    Each time it is invoked, getopts will place the next option in the\n"
+"    shell variable $name, initializing name if it does not exist, and\n"
+"    the index of the next argument to be processed into the shell\n"
+"    variable OPTIND.  OPTIND is initialized to 1 each time the shell or\n"
+"    a shell script is invoked.  When an option requires an argument,\n"
+"    getopts places that argument into the shell variable OPTARG.\n"
+"    \n"
+"    getopts reports errors in one of two ways.  If the first character\n"
+"    of OPTSTRING is a colon, getopts uses silent error reporting.  In\n"
+"    this mode, no error messages are printed.  If an invalid option is\n"
+"    seen, getopts places the option character found into OPTARG.  If a\n"
+"    required argument is not found, getopts places a ':' into NAME and\n"
+"    sets OPTARG to the option character found.  If getopts is not in\n"
+"    silent mode, and an invalid option is seen, getopts places '?' into\n"
+"    NAME and unsets OPTARG.  If a required argument is not found, a '?'\n"
+"    is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
+"    printed.\n"
+"    \n"
+"    If the shell variable OPTERR has the value 0, getopts disables the\n"
+"    printing of error messages, even if the first character of\n"
+"    OPTSTRING is not a colon.  OPTERR has the value 1 by default.\n"
+"    \n"
+"    Getopts normally parses the positional parameters ($0 - $9), but if\n"
+"    more arguments are given, they are parsed instead."
+msgstr ""
+
+#: builtins.c:522
+msgid ""
+"Exec FILE, replacing this shell with the specified program.\n"
+"    If FILE is not specified, the redirections take effect in this\n"
+"    shell.  If the first argument is `-l', then place a dash in the\n"
+"    zeroth arg passed to FILE, as login does.  If the `-c' option\n"
+"    is supplied, FILE is executed with a null environment.  The `-a'\n"
+"    option means to make set argv[0] of the executed process to NAME.\n"
+"    If the file cannot be executed and the shell is not interactive,\n"
+"    then the shell exits, unless the shell option `execfail' is set."
+msgstr ""
+
+#: builtins.c:535
+msgid ""
+"Exit the shell with a status of N.  If N is omitted, the exit status\n"
+"    is that of the last command executed."
+msgstr ""
+
+#: builtins.c:542
+msgid "Logout of a login shell."
+msgstr ""
+
+#: builtins.c:549
+msgid ""
+"fc is used to list or edit and re-execute commands from the history list.\n"
+"    FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
+"    string, which means the most recent command beginning with that\n"
+"    string.\n"
+"    \n"
+"       -e ENAME selects which editor to use.  Default is FCEDIT, then EDITOR,\n"
+"          then vi.\n"
+"    \n"
+"       -l means list lines instead of editing.\n"
+"       -n means no line numbers listed.\n"
+"       -r means reverse the order of the lines (making it newest listed first).\n"
+"    \n"
+"    With the `fc -s [pat=rep ...] [command]' format, the command is\n"
+"    re-executed after the substitution OLD=NEW is performed.\n"
+"    \n"
+"    A useful alias to use with this is r='fc -s', so that typing `r cc'\n"
+"    runs the last command beginning with `cc' and typing `r' re-executes\n"
+"    the last command."
+msgstr ""
+
+#: builtins.c:574
+msgid ""
+"Place JOB_SPEC in the foreground, and make it the current job.  If\n"
+"    JOB_SPEC is not present, the shell's notion of the current job is\n"
+"    used."
+msgstr ""
+
+#: builtins.c:584
+msgid ""
+"Place each JOB_SPEC in the background, as if it had been started with\n"
+"    `&'.  If JOB_SPEC is not present, the shell's notion of the current\n"
+"    job is used."
+msgstr ""
+
+#: builtins.c:593
+msgid ""
+"For each NAME, the full pathname of the command is determined and\n"
+"    remembered.  If the -p option is supplied, PATHNAME is used as the\n"
+"    full pathname of NAME, and no path search is performed.  The -r\n"
+"    option causes the shell to forget all remembered locations.  The -d\n"
+"    option causes the shell to forget the remembered location of each NAME.\n"
+"    If the -t option is supplied the full pathname to which each NAME\n"
+"    corresponds is printed.  If multiple NAME arguments are supplied with\n"
+"    -t, the NAME is printed before the hashed full pathname.  The -l option\n"
+"    causes output to be displayed in a format that may be reused as input.\n"
+"    If no arguments are given, information about remembered commands is displayed."
+msgstr ""
+
+#: builtins.c:609
+msgid ""
+"Display helpful information about builtin commands.  If PATTERN is\n"
+"    specified, gives detailed help on all commands matching PATTERN,\n"
+"    otherwise a list of the builtins is printed.  The -s option\n"
+"    restricts the output for each builtin command matching PATTERN to\n"
+"    a short usage synopsis."
+msgstr ""
+
+#: builtins.c:621
+msgid ""
+"Display the history list with line numbers.  Lines listed with\n"
+"    with a `*' have been modified.  Argument of N says to list only\n"
+"    the last N lines.  The `-c' option causes the history list to be\n"
+"    cleared by deleting all of the entries.  The `-d' option deletes\n"
+"    the history entry at offset OFFSET.  The `-w' option writes out the\n"
+"    current history to the history file;  `-r' means to read the file and\n"
+"    append the contents to the history list instead.  `-a' means\n"
+"    to append history lines from this session to the history file.\n"
+"    Argument `-n' means to read all history lines not already read\n"
+"    from the history file and append them to the history list.\n"
+"    \n"
+"    If FILENAME is given, then that is used as the history file else\n"
+"    if $HISTFILE has a value, that is used, else ~/.bash_history.\n"
+"    If the -s option is supplied, the non-option ARGs are appended to\n"
+"    the history list as a single entry.  The -p option means to perform\n"
+"    history expansion on each ARG and display the result, without storing\n"
+"    anything in the history list.\n"
+"    \n"
+"    If the $HISTTIMEFORMAT variable is set and not null, its value is used\n"
+"    as a format string for strftime(3) to print the time stamp associated\n"
+"    with each displayed history entry.  No time stamps are printed otherwise."
+msgstr ""
+
+#: builtins.c:649
+msgid ""
+"Lists the active jobs.  The -l option lists process id's in addition\n"
+"    to the normal information; the -p option lists process id's only.\n"
+"    If -n is given, only processes that have changed status since the last\n"
+"    notification are printed.  JOBSPEC restricts output to that job.  The\n"
+"    -r and -s options restrict output to running and stopped jobs only,\n"
+"    respectively.  Without options, the status of all active jobs is\n"
+"    printed.  If -x is given, COMMAND is run after all job specifications\n"
+"    that appear in ARGS have been replaced with the process ID of that job's\n"
+"    process group leader."
+msgstr ""
+
+#: builtins.c:665
+msgid ""
+"By default, removes each JOBSPEC argument from the table of active jobs.\n"
+"    If the -h option is given, the job is not removed from the table, but is\n"
+"    marked so that SIGHUP is not sent to the job if the shell receives a\n"
+"    SIGHUP.  The -a option, when JOBSPEC is not supplied, means to remove all\n"
+"    jobs from the job table; the -r option means to remove only running jobs."
+msgstr ""
+
+#: builtins.c:676
+msgid ""
+"Send the processes named by PID (or JOBSPEC) the signal SIGSPEC.  If\n"
+"    SIGSPEC is not present, then SIGTERM is assumed.  An argument of `-l'\n"
+"    lists the signal names; if arguments follow `-l' they are assumed to\n"
+"    be signal numbers for which names should be listed.  Kill is a shell\n"
+"    builtin for two reasons: it allows job IDs to be used instead of\n"
+"    process IDs, and, if you have reached the limit on processes that\n"
+"    you can create, you don't have to start a process to kill another one."
+msgstr ""
+
+#: builtins.c:688
+msgid ""
+"Each ARG is an arithmetic expression to be evaluated.  Evaluation\n"
+"    is done in fixed-width integers with no check for overflow, though\n"
+"    division by 0 is trapped and flagged as an error.  The following\n"
+"    list of operators is grouped into levels of equal-precedence operators.\n"
+"    The levels are listed in order of decreasing precedence.\n"
+"    \n"
+"    \tid++, id--\tvariable post-increment, post-decrement\n"
+"    \t++id, --id\tvariable pre-increment, pre-decrement\n"
+"    \t-, +\t\tunary minus, plus\n"
+"    \t!, ~\t\tlogical and bitwise negation\n"
+"    \t**\t\texponentiation\n"
+"    \t*, /, %\t\tmultiplication, division, remainder\n"
+"    \t+, -\t\taddition, subtraction\n"
+"    \t<<, >>\t\tleft and right bitwise shifts\n"
+"    \t<=, >=, <, >\tcomparison\n"
+"    \t==, !=\t\tequality, inequality\n"
+"    \t&\t\tbitwise AND\n"
+"    \t^\t\tbitwise XOR\n"
+"    \t|\t\tbitwise OR\n"
+"    \t&&\t\tlogical AND\n"
+"    \t||\t\tlogical OR\n"
+"    \texpr ? expr : expr\n"
+"    \t\t\tconditional operator\n"
+"    \t=, *=, /=, %=,\n"
+"    \t+=, -=, <<=, >>=,\n"
+"    \t&=, ^=, |=\tassignment\n"
+"    \n"
+"    Shell variables are allowed as operands.  The name of the variable\n"
+"    is replaced by its value (coerced to a fixed-width integer) within\n"
+"    an expression.  The variable need not have its integer attribute\n"
+"    turned on to be used in an expression.\n"
+"    \n"
+"    Operators are evaluated in order of precedence.  Sub-expressions in\n"
+"    parentheses are evaluated first and may override the precedence\n"
+"    rules above.\n"
+"    \n"
+"    If the last ARG evaluates to 0, let returns 1; 0 is returned\n"
+"    otherwise."
+msgstr ""
+
+#: builtins.c:731
+msgid ""
+"One line is read from the standard input, or from file descriptor FD if the\n"
+"    -u option is supplied, and the first word is assigned to the first NAME,\n"
+"    the second word to the second NAME, and so on, with leftover words assigned\n"
+"    to the last NAME.  Only the characters found in $IFS are recognized as word\n"
+"    delimiters.  If no NAMEs are supplied, the line read is stored in the REPLY\n"
+"    variable.  If the -r option is given, this signifies `raw' input, and\n"
+"    backslash escaping is disabled.  The -d option causes read to continue\n"
+"    until the first character of DELIM is read, rather than newline.  If the -p\n"
+"    option is supplied, the string PROMPT is output without a trailing newline\n"
+"    before attempting to read.  If -a is supplied, the words read are assigned\n"
+"    to sequential indices of ARRAY, starting at zero.  If -e is supplied and\n"
+"    the shell is interactive, readline is used to obtain the line.  If -n is\n"
+"    supplied with a non-zero NCHARS argument, read returns after NCHARS\n"
+"    characters have been read.  The -s option causes input coming from a\n"
+"    terminal to not be echoed.\n"
+"    \n"
+"    The -t option causes read to time out and return failure if a complete line\n"
+"    of input is not read within TIMEOUT seconds.  If the TMOUT variable is set,\n"
+"    its value is the default timeout.  The return code is zero, unless end-of-file\n"
+"    is encountered, read times out, or an invalid file descriptor is supplied as\n"
+"    the argument to -u."
+msgstr ""
+
+#: builtins.c:757
+msgid ""
+"Causes a function to exit with the return value specified by N.  If N\n"
+"    is omitted, the return status is that of the last command."
+msgstr ""
+
+#: builtins.c:764
+msgid ""
+"    -a  Mark variables which are modified or created for export.\n"
+"        -b  Notify of job termination immediately.\n"
+"        -e  Exit immediately if a command exits with a non-zero status.\n"
+"        -f  Disable file name generation (globbing).\n"
+"        -h  Remember the location of commands as they are looked up.\n"
+"        -k  All assignment arguments are placed in the environment for a\n"
+"            command, not just those that precede the command name.\n"
+"        -m  Job control is enabled.\n"
+"        -n  Read commands but do not execute them.\n"
+"        -o option-name\n"
+"            Set the variable corresponding to option-name:\n"
+"                allexport    same as -a\n"
+"                braceexpand  same as -B\n"
+"                emacs        use an emacs-style line editing interface\n"
+"                errexit      same as -e\n"
+"                errtrace     same as -E\n"
+"                functrace    same as -T\n"
+"                hashall      same as -h\n"
+"                histexpand   same as -H\n"
+"                history      enable command history\n"
+"                ignoreeof    the shell will not exit upon reading EOF\n"
+"                interactive-comments\n"
+"                             allow comments to appear in interactive commands\n"
+"                keyword      same as -k\n"
+"                monitor      same as -m\n"
+"                noclobber    same as -C\n"
+"                noexec       same as -n\n"
+"                noglob       same as -f\n"
+"                nolog        currently accepted but ignored\n"
+"                notify       same as -b\n"
+"                nounset      same as -u\n"
+"                onecmd       same as -t\n"
+"                physical     same as -P\n"
+"                pipefail     the return value of a pipeline is the status of\n"
+"                             the last command to exit with a non-zero status,\n"
+"                             or zero if no command exited with a non-zero status\n"
+"                posix        change the behavior of bash where the default\n"
+"                             operation differs from the 1003.2 standard to\n"
+"                             match the standard\n"
+"                privileged   same as -p\n"
+"                verbose      same as -v\n"
+"                vi           use a vi-style line editing interface\n"
+"                xtrace       same as -x\n"
+"        -p  Turned on whenever the real and effective user ids do not match.\n"
+"            Disables processing of the $ENV file and importing of shell\n"
+"            functions.  Turning this option off causes the effective uid and\n"
+"            gid to be set to the real uid and gid.\n"
+"        -t  Exit after reading and executing one command.\n"
+"        -u  Treat unset variables as an error when substituting.\n"
+"        -v  Print shell input lines as they are read.\n"
+"        -x  Print commands and their arguments as they are executed.\n"
+"        -B  the shell will perform brace expansion\n"
+"        -C  If set, disallow existing regular files to be overwritten\n"
+"            by redirection of output.\n"
+"        -E  If set, the ERR trap is inherited by shell functions.\n"
+"        -H  Enable ! style history substitution.  This flag is on\n"
+"            by default when the shell is interactive.\n"
+"        -P  If set, do not follow symbolic links when executing commands\n"
+"            such as cd which change the current directory.\n"
+"        -T  If set, the DEBUG trap is inherited by shell functions.\n"
+"        -   Assign any remaining arguments to the positional parameters.\n"
+"            The -x and -v options are turned off.\n"
+"    \n"
+"    Using + rather than - causes these flags to be turned off.  The\n"
+"    flags can also be used upon invocation of the shell.  The current\n"
+"    set of flags may be found in $-.  The remaining n ARGs are positional\n"
+"    parameters and are assigned, in order, to $1, $2, .. $n.  If no\n"
+"    ARGs are given, all shell variables are printed."
+msgstr ""
+
+#: builtins.c:837
+msgid ""
+"For each NAME, remove the corresponding variable or function.  Given\n"
+"    the `-v', unset will only act on variables.  Given the `-f' flag,\n"
+"    unset will only act on functions.  With neither flag, unset first\n"
+"    tries to unset a variable, and if that fails, then tries to unset a\n"
+"    function.  Some variables cannot be unset; also see readonly."
+msgstr ""
+
+#: builtins.c:847
+msgid ""
+"NAMEs are marked for automatic export to the environment of\n"
+"    subsequently executed commands.  If the -f option is given,\n"
+"    the NAMEs refer to functions.  If no NAMEs are given, or if `-p'\n"
+"    is given, a list of all names that are exported in this shell is\n"
+"    printed.  An argument of `-n' says to remove the export property\n"
+"    from subsequent NAMEs.  An argument of `--' disables further option\n"
+"    processing."
+msgstr ""
+
+#: builtins.c:859
+msgid ""
+"The given NAMEs are marked readonly and the values of these NAMEs may\n"
+"    not be changed by subsequent assignment.  If the -f option is given,\n"
+"    then functions corresponding to the NAMEs are so marked.  If no\n"
+"    arguments are given, or if `-p' is given, a list of all readonly names\n"
+"    is printed.  The `-a' option means to treat each NAME as\n"
+"    an array variable.  An argument of `--' disables further option\n"
+"    processing."
+msgstr ""
+
+#: builtins.c:871
+msgid ""
+"The positional parameters from $N+1 ... are renamed to $1 ...  If N is\n"
+"    not given, it is assumed to be 1."
+msgstr ""
+
+#: builtins.c:878 builtins.c:887
+msgid ""
+"Read and execute commands from FILENAME and return.  The pathnames\n"
+"    in $PATH are used to find the directory containing FILENAME.  If any\n"
+"    ARGUMENTS are supplied, they become the positional parameters when\n"
+"    FILENAME is executed."
+msgstr ""
+
+#: builtins.c:897
+msgid ""
+"Suspend the execution of this shell until it receives a SIGCONT\n"
+"    signal.  The `-f' if specified says not to complain about this\n"
+"    being a login shell if it is; just suspend anyway."
+msgstr ""
+
+#: builtins.c:906
+msgid ""
+"Exits with a status of 0 (true) or 1 (false) depending on\n"
+"    the evaluation of EXPR.  Expressions may be unary or binary.  Unary\n"
+"    expressions are often used to examine the status of a file.  There\n"
+"    are string operators as well, and numeric comparison operators.\n"
+"    \n"
+"    File operators:\n"
+"    \n"
+"        -a FILE        True if file exists.\n"
+"        -b FILE        True if file is block special.\n"
+"        -c FILE        True if file is character special.\n"
+"        -d FILE        True if file is a directory.\n"
+"        -e FILE        True if file exists.\n"
+"        -f FILE        True if file exists and is a regular file.\n"
+"        -g FILE        True if file is set-group-id.\n"
+"        -h FILE        True if file is a symbolic link.\n"
+"        -L FILE        True if file is a symbolic link.\n"
+"        -k FILE        True if file has its `sticky' bit set.\n"
+"        -p FILE        True if file is a named pipe.\n"
+"        -r FILE        True if file is readable by you.\n"
+"        -s FILE        True if file exists and is not empty.\n"
+"        -S FILE        True if file is a socket.\n"
+"        -t FD          True if FD is opened on a terminal.\n"
+"        -u FILE        True if the file is set-user-id.\n"
+"        -w FILE        True if the file is writable by you.\n"
+"        -x FILE        True if the file is executable by you.\n"
+"        -O FILE        True if the file is effectively owned by you.\n"
+"        -G FILE        True if the file is effectively owned by your group.\n"
+"        -N FILE        True if the file has been modified since it was last read.\n"
+"    \n"
+"      FILE1 -nt FILE2  True if file1 is newer than file2 (according to\n"
+"                       modification date).\n"
+"    \n"
+"      FILE1 -ot FILE2  True if file1 is older than file2.\n"
+"    \n"
+"      FILE1 -ef FILE2  True if file1 is a hard link to file2.\n"
+"    \n"
+"    String operators:\n"
+"    \n"
+"        -z STRING      True if string is empty.\n"
+"    \n"
+"        -n STRING\n"
+"        STRING         True if string is not empty.\n"
+"    \n"
+"        STRING1 = STRING2\n"
+"                       True if the strings are equal.\n"
+"        STRING1 != STRING2\n"
+"                       True if the strings are not equal.\n"
+"        STRING1 < STRING2\n"
+"                       True if STRING1 sorts before STRING2 lexicographically.\n"
+"        STRING1 > STRING2\n"
+"                       True if STRING1 sorts after STRING2 lexicographically.\n"
+"    \n"
+"    Other operators:\n"
+"    \n"
+"        -o OPTION      True if the shell option OPTION is enabled.\n"
+"        ! EXPR         True if expr is false.\n"
+"        EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
+"        EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
+"    \n"
+"        arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,\n"
+"                       -lt, -le, -gt, or -ge.\n"
+"    \n"
+"    Arithmetic binary operators return true if ARG1 is equal, not-equal,\n"
+"    less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n"
+"    than ARG2."
+msgstr ""
+
+#: builtins.c:976
+msgid ""
+"This is a synonym for the \"test\" builtin, but the last\n"
+"    argument must be a literal `]', to match the opening `['."
+msgstr ""
+
+#: builtins.c:983
+msgid ""
+"Print the accumulated user and system times for processes run from\n"
+"    the shell."
+msgstr ""
+
+#: builtins.c:990
+msgid ""
+"The command ARG is to be read and executed when the shell receives\n"
+"    signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC\n"
+"    is supplied) or `-', each specified signal is reset to its original\n"
+"    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
+"    shell and by the commands it invokes.  If a SIGNAL_SPEC is EXIT (0)\n"
+"    the command ARG is executed on exit from the shell.  If a SIGNAL_SPEC\n"
+"    is DEBUG, ARG is executed after every simple command.  If the`-p' option\n"
+"    is supplied then the trap commands associated with each SIGNAL_SPEC are\n"
+"    displayed.  If no arguments are supplied or if only `-p' is given, trap\n"
+"    prints the list of commands associated with each signal.  Each SIGNAL_SPEC\n"
+"    is either a signal name in <signal.h> or a signal number.  Signal names\n"
+"    are case insensitive and the SIG prefix is optional.  `trap -l' prints\n"
+"    a list of signal names and their corresponding numbers.  Note that a\n"
+"    signal can be sent to the shell with \"kill -signal $$\"."
+msgstr ""
+
+#: builtins.c:1009
+msgid ""
+"For each NAME, indicate how it would be interpreted if used as a\n"
+"    command name.\n"
+"    \n"
+"    If the -t option is used, `type' outputs a single word which is one of\n"
+"    `alias', `keyword', `function', `builtin', `file' or `', if NAME is an\n"
+"    alias, shell reserved word, shell function, shell builtin, disk file,\n"
+"    or unfound, respectively.\n"
+"    \n"
+"    If the -p flag is used, `type' either returns the name of the disk\n"
+"    file that would be executed, or nothing if `type -t NAME' would not\n"
+"    return `file'.\n"
+"    \n"
+"    If the -a flag is used, `type' displays all of the places that contain\n"
+"    an executable named `file'.  This includes aliases, builtins, and\n"
+"    functions, if and only if the -p flag is not also used.\n"
+"    \n"
+"    The -f flag suppresses shell function lookup.\n"
+"    \n"
+"    The -P flag forces a PATH search for each NAME, even if it is an alias,\n"
+"    builtin, or function, and returns the name of the disk file that would\n"
+"    be executed."
+msgstr ""
+
+#: builtins.c:1036
+msgid ""
+"Ulimit provides control over the resources available to processes\n"
+"    started by the shell, on systems that allow such control.  If an\n"
+"    option is given, it is interpreted as follows:\n"
+"    \n"
+"        -S\tuse the `soft' resource limit\n"
+"        -H\tuse the `hard' resource limit\n"
+"        -a\tall current limits are reported\n"
+"        -c\tthe maximum size of core files created\n"
+"        -d\tthe maximum size of a process's data segment\n"
+"        -e\tthe maximum scheduling priority (`nice')\n"
+"        -f\tthe maximum size of files written by the shell and its children\n"
+"        -i\tthe maximum number of pending signals\n"
+"        -l\tthe maximum size a process may lock into memory\n"
+"        -m\tthe maximum resident set size\n"
+"        -n\tthe maximum number of open file descriptors\n"
+"        -p\tthe pipe buffer size\n"
+"        -q\tthe maximum number of bytes in POSIX message queues\n"
+"        -r\tthe maximum real-time scheduling priority\n"
+"        -s\tthe maximum stack size\n"
+"        -t\tthe maximum amount of cpu time in seconds\n"
+"        -u\tthe maximum number of user processes\n"
+"        -v\tthe size of virtual memory\n"
+"        -x\tthe maximum number of file locks\n"
+"    \n"
+"    If LIMIT is given, it is the new value of the specified resource;\n"
+"    the special LIMIT values `soft', `hard', and `unlimited' stand for\n"
+"    the current soft limit, the current hard limit, and no limit, respectively.\n"
+"    Otherwise, the current value of the specified resource is printed.\n"
+"    If no option is given, then -f is assumed.  Values are in 1024-byte\n"
+"    increments, except for -t, which is in seconds, -p, which is in\n"
+"    increments of 512 bytes, and -u, which is an unscaled number of\n"
+"    processes."
+msgstr ""
+
+#: builtins.c:1074
+msgid ""
+"The user file-creation mask is set to MODE.  If MODE is omitted, or if\n"
+"    `-S' is supplied, the current value of the mask is printed.  The `-S'\n"
+"    option makes the output symbolic; otherwise an octal number is output.\n"
+"    If `-p' is supplied, and MODE is omitted, the output is in a form\n"
+"    that may be used as input.  If MODE begins with a digit, it is\n"
+"    interpreted as an octal number, otherwise it is a symbolic mode string\n"
+"    like that accepted by chmod(1)."
+msgstr ""
+
+#: builtins.c:1087
+msgid ""
+"Wait for the specified process and report its termination status.  If\n"
+"    N is not given, all currently active child processes are waited for,\n"
+"    and the return code is zero.  N may be a process ID or a job\n"
+"    specification; if a job spec is given, all processes in the job's\n"
+"    pipeline are waited for."
+msgstr ""
+
+#: builtins.c:1099
+msgid ""
+"Wait for the specified process and report its termination status.  If\n"
+"    N is not given, all currently active child processes are waited for,\n"
+"    and the return code is zero.  N is a process ID; if it is not given,\n"
+"    all child processes of the shell are waited for."
+msgstr ""
+
+#: builtins.c:1109
+msgid ""
+"The `for' loop executes a sequence of commands for each member in a\n"
+"    list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is\n"
+"    assumed.  For each element in WORDS, NAME is set to that element, and\n"
+"    the COMMANDS are executed."
+msgstr ""
+
+#: builtins.c:1118
+msgid ""
+"Equivalent to\n"
+"    \t(( EXP1 ))\n"
+"    \twhile (( EXP2 )); do\n"
+"    \t\tCOMMANDS\n"
+"    \t\t(( EXP3 ))\n"
+"    \tdone\n"
+"    EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is\n"
+"    omitted, it behaves as if it evaluates to 1."
+msgstr ""
+
+#: builtins.c:1131
+msgid ""
+"The WORDS are expanded, generating a list of words.  The\n"
+"    set of expanded words is printed on the standard error, each\n"
+"    preceded by a number.  If `in WORDS' is not present, `in \"$@\"'\n"
+"    is assumed.  The PS3 prompt is then displayed and a line read\n"
+"    from the standard input.  If the line consists of the number\n"
+"    corresponding to one of the displayed words, then NAME is set\n"
+"    to that word.  If the line is empty, WORDS and the prompt are\n"
+"    redisplayed.  If EOF is read, the command completes.  Any other\n"
+"    value read causes NAME to be set to null.  The line read is saved\n"
+"    in the variable REPLY.  COMMANDS are executed after each selection\n"
+"    until a break command is executed."
+msgstr ""
+
+#: builtins.c:1147
+msgid ""
+"Execute PIPELINE and print a summary of the real time, user CPU time,\n"
+"    and system CPU time spent executing PIPELINE when it terminates.\n"
+"    The return status is the return status of PIPELINE.  The `-p' option\n"
+"    prints the timing summary in a slightly different format.  This uses\n"
+"    the value of the TIMEFORMAT variable as the output format."
+msgstr ""
+
+#: builtins.c:1157
+msgid ""
+"Selectively execute COMMANDS based upon WORD matching PATTERN.  The\n"
+"    `|' is used to separate multiple patterns."
+msgstr ""
+
+#: builtins.c:1164
+msgid ""
+"The `if COMMANDS' list is executed.  If its exit status is zero, then the\n"
+"    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list is\n"
+"    executed in turn, and if its exit status is zero, the corresponding\n"
+"    `then COMMANDS' list is executed and the if command completes.  Otherwise,\n"
+"    the `else COMMANDS' list is executed, if present.  The exit status of the\n"
+"    entire construct is the exit status of the last command executed, or zero\n"
+"    if no condition tested true."
+msgstr ""
+
+#: builtins.c:1176
+msgid ""
+"Expand and execute COMMANDS as long as the final command in the\n"
+"    `while' COMMANDS has an exit status of zero."
+msgstr ""
+
+#: builtins.c:1183
+msgid ""
+"Expand and execute COMMANDS as long as the final command in the\n"
+"    `until' COMMANDS has an exit status which is not zero."
+msgstr ""
+
+#: builtins.c:1190
+msgid ""
+"Create a simple command invoked by NAME which runs COMMANDS.\n"
+"    Arguments on the command line along with NAME are passed to the\n"
+"    function as $0 .. $n."
+msgstr ""
+
+#: builtins.c:1198
+msgid ""
+"Run a set of commands in a group.  This is one way to redirect an\n"
+"    entire set of commands."
+msgstr ""
+
+#: builtins.c:1205
+msgid ""
+"Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a\n"
+"    stopped or background job.  JOB_SPEC can specify either a job name\n"
+"    or a job number.  Following JOB_SPEC with a `&' places the job in\n"
+"    the background, as if the job specification had been supplied as an\n"
+"    argument to `bg'."
+msgstr ""
+
+#: builtins.c:1215
+msgid ""
+"The EXPRESSION is evaluated according to the rules for arithmetic\n"
+"    evaluation.  Equivalent to \"let EXPRESSION\"."
+msgstr ""
+
+#: builtins.c:1222
+msgid ""
+"Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
+"    expression EXPRESSION.  Expressions are composed of the same primaries used\n"
+"    by the `test' builtin, and may be combined using the following operators\n"
+"    \n"
+"    \t( EXPRESSION )\tReturns the value of EXPRESSION\n"
+"    \t! EXPRESSION\tTrue if EXPRESSION is false; else false\n"
+"    \tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n"
+"    \tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n"
+"    \n"
+"    When the `==' and `!=' operators are used, the string to the right of the\n"
+"    operator is used as a pattern and pattern matching is performed.  The\n"
+"    && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n"
+"    determine the expression's value."
+msgstr ""
+
+#: builtins.c:1240
+msgid ""
+"BASH_VERSION\tVersion information for this Bash.\n"
+"    CDPATH\tA colon-separated list of directories to search\n"
+"    \t\tfor directries given as arguments to `cd'.\n"
+"    GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n"
+"    \t\tbe ignored by pathname expansion.\n"
+"    HISTFILE\tThe name of the file where your command history is stored.\n"
+"    HISTFILESIZE\tThe maximum number of lines this file can contain.\n"
+"    HISTSIZE\tThe maximum number of history lines that a running\n"
+"    \t\tshell can access.\n"
+"    HOME\tThe complete pathname to your login directory.\n"
+"    HOSTNAME\tThe name of the current host.\n"
+"    HOSTTYPE\tThe type of CPU this version of Bash is running under.\n"
+"    IGNOREEOF\tControls the action of the shell on receipt of an EOF\n"
+"    \t\tcharacter as the sole input.  If set, then the value\n"
+"    \t\tof it is the number of EOF characters that can be seen\n"
+"    \t\tin a row on an empty line before the shell will exit\n"
+"    \t\t(default 10).  When unset, EOF signifies the end of input.\n"
+"    MACHTYPE\tA string describing the current system Bash is running on.\n"
+"    MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n"
+"    MAILPATH\tA colon-separated list of filenames which Bash checks\n"
+"    \t\tfor new mail.\n"
+"    OSTYPE\tThe version of Unix this version of Bash is running on.\n"
+"    PATH\tA colon-separated list of directories to search when\n"
+"    \t\tlooking for commands.\n"
+"    PROMPT_COMMAND\tA command to be executed before the printing of each\n"
+"    \t\tprimary prompt.\n"
+"    PS1\t\tThe primary prompt string.\n"
+"    PS2\t\tThe secondary prompt string.\n"
+"    PWD\t\tThe full pathname of the current directory.\n"
+"    SHELLOPTS\tA colon-separated list of enabled shell options.\n"
+"    TERM\tThe name of the current terminal type.\n"
+"    TIMEFORMAT\tThe output format for timing statistics displayed by the\n"
+"    \t\t`time' reserved word.\n"
+"    auto_resume\tNon-null means a command word appearing on a line by\n"
+"    \t\titself is first looked for in the list of currently\n"
+"    \t\tstopped jobs.  If found there, that job is foregrounded.\n"
+"    \t\tA value of `exact' means that the command word must\n"
+"    \t\texactly match a command in the list of stopped jobs.  A\n"
+"    \t\tvalue of `substring' means that the command word must\n"
+"    \t\tmatch a substring of the job.  Any other value means that\n"
+"    \t\tthe command must be a prefix of a stopped job.\n"
+"    histchars\tCharacters controlling history expansion and quick\n"
+"    \t\tsubstitution.  The first character is the history\n"
+"    \t\tsubstitution character, usually `!'.  The second is\n"
+"    \t\tthe `quick substitution' character, usually `^'.  The\n"
+"    \t\tthird is the `history comment' character, usually `#'.\n"
+"    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
+"    \t\tcommands should be saved on the history list.\n"
+msgstr ""
+
+#: builtins.c:1295
+msgid ""
+"Adds a directory to the top of the directory stack, or rotates\n"
+"    the stack, making the new top of the stack the current working\n"
+"    directory.  With no arguments, exchanges the top two directories.\n"
+"    \n"
+"    +N\tRotates the stack so that the Nth directory (counting\n"
+"    \tfrom the left of the list shown by `dirs', starting with\n"
+"    \tzero) is at the top.\n"
+"    \n"
+"    -N\tRotates the stack so that the Nth directory (counting\n"
+"    \tfrom the right of the list shown by `dirs', starting with\n"
+"    \tzero) is at the top.\n"
+"    \n"
+"    -n\tsuppress the normal change of directory when adding directories\n"
+"    \tto the stack, so only the stack is manipulated.\n"
+"    \n"
+"    dir\tadds DIR to the directory stack at the top, making it the\n"
+"    \tnew current working directory.\n"
+"    \n"
+"    You can see the directory stack with the `dirs' command."
+msgstr ""
+
+#: builtins.c:1321
+msgid ""
+"Removes entries from the directory stack.  With no arguments,\n"
+"    removes the top directory from the stack, and cd's to the new\n"
+"    top directory.\n"
+"    \n"
+"    +N\tremoves the Nth entry counting from the left of the list\n"
+"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
+"    \tremoves the first directory, `popd +1' the second.\n"
+"    \n"
+"    -N\tremoves the Nth entry counting from the right of the list\n"
+"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
+"    \tremoves the last directory, `popd -1' the next to last.\n"
+"    \n"
+"    -n\tsuppress the normal change of directory when removing directories\n"
+"    \tfrom the stack, so only the stack is manipulated.\n"
+"    \n"
+"    You can see the directory stack with the `dirs' command."
+msgstr ""
+
+#: builtins.c:1344
+msgid ""
+"Display the list of currently remembered directories.  Directories\n"
+"    find their way onto the list with the `pushd' command; you can get\n"
+"    back up through the list with the `popd' command.\n"
+"    \n"
+"    The -l flag specifies that `dirs' should not print shorthand versions\n"
+"    of directories which are relative to your home directory.  This means\n"
+"    that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag\n"
+"    causes `dirs' to print the directory stack with one entry per line,\n"
+"    prepending the directory name with its position in the stack.  The -p\n"
+"    flag does the same thing, but the stack position is not prepended.\n"
+"    The -c flag clears the directory stack by deleting all of the elements.\n"
+"    \n"
+"    +N\tdisplays the Nth entry counting from the left of the list shown by\n"
+"    \tdirs when invoked without options, starting with zero.\n"
+"    \n"
+"    -N\tdisplays the Nth entry counting from the right of the list shown by\n"
+"    \tdirs when invoked without options, starting with zero."
+msgstr ""
+
+#: builtins.c:1367
+msgid ""
+"Toggle the values of variables controlling optional behavior.\n"
+"    The -s flag means to enable (set) each OPTNAME; the -u flag\n"
+"    unsets each OPTNAME.  The -q flag suppresses output; the exit\n"
+"    status indicates whether each OPTNAME is set or unset.  The -o\n"
+"    option restricts the OPTNAMEs to those defined for use with\n"
+"    `set -o'.  With no options, or with the -p option, a list of all\n"
+"    settable options is displayed, with an indication of whether or\n"
+"    not each is set."
+msgstr ""
+
+#: builtins.c:1380
+msgid ""
+"printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT\n"
+"    is a character string which contains three types of objects: plain\n"
+"    characters, which are simply copied to standard output, character escape\n"
+"    sequences which are converted and copied to the standard output, and\n"
+"    format specifications, each of which causes printing of the next successive\n"
+"    argument.  In addition to the standard printf(1) formats, %b means to\n"
+"    expand backslash escape sequences in the corresponding argument, and %q\n"
+"    means to quote the argument in a way that can be reused as shell input.\n"
+"    If the -v option is supplied, the output is placed into the value of the\n"
+"    shell variable VAR rather than being sent to the standard output."
+msgstr ""
+
+#: builtins.c:1396
+msgid ""
+"For each NAME, specify how arguments are to be completed.\n"
+"    If the -p option is supplied, or if no options are supplied, existing\n"
+"    completion specifications are printed in a way that allows them to be\n"
+"    reused as input.  The -r option removes a completion specification for\n"
+"    each NAME, or, if no NAMEs are supplied, all completion specifications."
+msgstr ""
+
+#: builtins.c:1408
+msgid ""
+"Display the possible completions depending on the options.  Intended\n"
+"    to be used from within a shell function generating possible completions.\n"
+"    If the optional WORD argument is supplied, matches against WORD are\n"
+"    generated."
+msgstr ""
diff --git a/shell.c b/shell.c
index 379bb09c82183c51a64ac1736a84a3d975851c22..fac78dcad2e4c6fc5cee72fef0e8a917159e214a 100644 (file)
--- a/shell.c
+++ b/shell.c
 #  include <readline/history.h>
 #endif
 
+#if defined (READLINE)
+#  include "bashline.h"
+#endif
+
 #include <tilde/tilde.h>
 #include <glob/strmatch.h>
 
@@ -1740,6 +1744,12 @@ shell_reinitialize ()
   delete_all_contexts (shell_variables);
   delete_all_variables (shell_functions);
 
+  reinit_special_variables ();
+
+#if defined (READLINE)
+  bashline_reset ();
+#endif
+
   shell_reinitialized = 1;
 }
 
index a5f74bbca7cb6c80054ada4ee9cd3fef82f75e96..b69204f71f91ac882265ecff1fbe9cbc3b024e11 100644 (file)
--- a/shell.c~
+++ b/shell.c~
 #  include <readline/history.h>
 #endif
 
+#if defined (READLINE)
+#  include "bashline.h"
+#endif
+
 #include <tilde/tilde.h>
 #include <glob/strmatch.h>
 
@@ -185,9 +189,6 @@ int have_devfd = HAVE_DEV_FD;
 int have_devfd = 0;
 #endif
 
-/* If == 31, shell compatible with bash-3.1, = =32 with bash-3.2, and so on */
-int shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
-
 /* The name of the .(shell)rc file. */
 static char *bashrc_file = "~/.bashrc";
 
@@ -1743,6 +1744,12 @@ shell_reinitialize ()
   delete_all_contexts (shell_variables);
   delete_all_variables (shell_functions);
 
+  reinit_special_variables ();
+
+#if defined (READLINE)
+  bash_readline_initialized = 0;
+#endif
+
   shell_reinitialized = 1;
 }
 
diff --git a/subst.c b/subst.c
index 639d97950b3eb9ed56a582752b6e63d81467dd6c..6cc70a51e4c104928c8978de6debad1367211cbd 100644 (file)
--- a/subst.c
+++ b/subst.c
@@ -7581,6 +7581,11 @@ string_quote_removal (string, quoted)
        {
        case '\\':
          c = string[++sindex];
+         if (c == 0)
+           {
+             *r++ = '\\';
+             break;
+           }
          if (((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || dquote) && (sh_syntaxtab[c] & CBSDQUOTE) == 0)
            *r++ = '\\';
          /* FALLTHROUGH */
diff --git a/support/checkbashisms b/support/checkbashisms
new file mode 100755 (executable)
index 0000000..acd93a9
--- /dev/null
@@ -0,0 +1,172 @@
+#! /usr/bin/perl -w
+
+# This script is essentially copied from /usr/share/lintian/checks/scripts,
+# which is:
+#   Copyright (C) 1998 Richard Braakman
+#   Copyright (C) 2002 Josip Rodin
+# This version is
+#   Copyright (C) 2003 Julian Gilbey
+# 
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, you can find it on the World Wide
+# Web at http://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+# MA 02111-1307, USA.
+
+use strict;
+
+(my $progname = $0) =~ s|.*/||;
+
+my $usage = <<"EOF";
+Usage: $progname [-n] script ...
+   or: $progname --help
+   or: $progname --version
+This script performs basic checks for the presence of bashisms
+in /bin/sh scripts.
+EOF
+
+my $version = <<"EOF";
+This is $progname, from the Debian devscripts package, version 2.10.7ubuntu5
+This code is copyright 2003 by Julian Gilbey <jdg\@debian.org>,
+based on original code which is copyright 1998 by Richard Braakman
+and copyright 2002 by Josip Rodin.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2, or (at your option) any later version.
+EOF
+
+my $opt_echo = 0;
+
+##
+## handle command-line options
+##
+if (int(@ARGV) == 0 or $ARGV[0] =~ /^(--help|-h)$/) { print $usage; exit 0; }
+if (@ARGV and $ARGV[0] =~ /^(--version|-v)$/) { print $version; exit 0; }
+if (@ARGV and $ARGV[0] =~ /^(--newline|-n)$/) { $opt_echo = 1; }
+
+
+my $status = 0;
+
+foreach my $filename (@ARGV) {
+    if ($filename eq '-n' or $filename eq '--newline') {
+       next;
+    }
+    unless (open C, "$filename") {
+       warn "cannot open script $filename for reading: $!\n";
+       $status |= 2;
+       next;
+    }
+
+    my $cat_string = "";
+
+    while (<C>) {
+       if ($. == 1) { # This should be an interpreter line
+           if (m,^\#!\s*(\S+),) {
+               my $interpreter = $1;
+               if ($interpreter =~ m,/bash$,) {
+                   warn "script $filename is already a bash script; skipping\n";
+                   $status |= 2;
+                   last;  # end this file
+               }
+               elsif ($interpreter !~ m,/(sh|ash|dash)$,) {
+                   warn "script $filename does not appear to be a /bin/sh script; skipping\n";
+                   $status |= 2;
+                   last;
+               }
+           } else {
+               warn "script $filename does not appear to have a \#! interpreter line;\nyou may get strange results\n";
+           }
+       }
+
+       next if m,^\s*\#,;  # skip comment lines
+       chomp;
+       my $orig_line = $_;
+
+       s/(?<!\\)\#.*$//;   # eat comments
+
+       if (m/(?:^|\s+)cat\s*\<\<\s*(\w+)/) {
+           $cat_string = $1;
+       }
+       elsif ($cat_string ne "" and m/^$cat_string/) {
+           $cat_string = "";
+       }
+       my $within_another_shell = 0;
+       if (m,(^|\s+)((/usr)?/bin/)?((b|d)?a|k|z|t?c)sh\s+-c\s*.+,) {
+           $within_another_shell = 1;
+       }
+       # if cat_string is set, we are in a HERE document and need not
+       # check for things
+       if ($cat_string eq "" and !$within_another_shell) {
+           my $found = 0;
+           my $match = '';
+           my $explanation = '';
+           my %bashisms = (
+               '(?:^|\s+)function\s+\w+' =>   q<'function' is useless>,
+               '(?:^|\s+)select\s+\w+' =>     q<'select' is not POSIX>,
+               '(?:^|\s+)source\s+(?:\.\/|\/|\$)[^\s]+' =>
+                                              q<should be '.', not 'source'>,
+               '(\[|test|-o|-a)\s*[^\s]+\s+==\s' =>
+                                              q<should be 'b = a'>,
+               '\s\|\&' =>                    q<pipelining is not POSIX>,
+               '\$\[\w+\]' =>                 q<arithmetic not allowed>,
+               '\$\{\w+\:\d+(?::\d+)?\}' =>   q<${foo:3[:1]}>,
+               '\$\{!\w+[@*]\}' =>            q<${!prefix[*|@]>,
+               '\$\{!\w+\}' =>                q<${!name}>,
+               '\$\{\w+(/.+?){1,2}\}' =>      q<${parm/?/pat[/str]}>,
+               '[^\\\]\{([^\s]+?,)+[^\\\}\s]+\}' =>
+                                              q<brace expansion>,
+               '(?:^|\s+)\w+\[\d+\]=' =>      q<bash arrays, H[0]>,
+               '\$\{\#?\w+\[[0-9\*\@]+\]\}' => q<bash arrays, ${name[0|*|@]}>,
+               '(?:^|\s+)(read\s*(?:;|$))' => q<read without variable>,
+               '\$\(\([A-Za-z]' => q<cnt=$((cnt + 1)) does not work in dash>,
+               'echo\s+-[e]' =>               q<echo -e>,
+               'exec\s+-[acl]' =>             q<exec -c/-l/-a name>,
+               '\blet\s' =>                   q<let ...>,
+               '\$RANDOM\b' =>                q<$RANDOM>,
+               '(?<!\$)\(\(' =>               q<'((' should be '$(('>,
+           );
+
+           if ($opt_echo) {
+               $bashisms{'echo\s+-[n]'} = 'q<echo -n>';
+           }
+
+           while (my ($re,$expl) = each %bashisms) {
+               if (m/($re)/) {
+                   $found = 1;
+                   $match = $1;
+                   $explanation = $expl;
+                   last;
+               }
+           }
+           # since this test is ugly, I have to do it by itself
+           # detect source (.) trying to pass args to the command it runs
+           if (not $found and m/^\s*(\.\s+[^\s]+\s+([^\s]+))/) {
+               if ($2 eq '&&' || $2 eq '||') {
+                   # everything is ok
+                   ;
+               } else {
+                   $found = 1;
+                   $match = $1;
+               }
+           }
+           unless ($found == 0) {
+               warn "possible bashism in $filename line $. ($explanation):\n$orig_line\n";
+               $status |= 1;
+           }
+       }
+    }
+
+    close C;
+}
+
+exit $status;
index 72ec06a2c1fd8dde92acea5e8ac773e35f1d061b..3efcf32d68e9722024b6ca9d67f9e81b2aa5ac04 100755 (executable)
@@ -1,4 +1,4 @@
-BUILD_DIR=/usr/local/build/bash/bash-current
+BUILD_DIR=/usr/local/build/chet/bash/bash-current
 THIS_SH=$BUILD_DIR/bash
 PATH=$PATH:$BUILD_DIR
 
index 0c4226a5e0909780135d7205a8e69effe78b3bd8..b04b1f8e6fbb1ce210360754d52fb761767b42ea 100644 (file)
@@ -1366,6 +1366,7 @@ get_comp_wordbreaks (var)
   if (rl_completer_word_break_characters == 0 && bash_readline_initialized == 0)
     enable_hostname_completion (perform_hostname_completion);
 
+itrace("get: rl_completer_word_break_characters = `%s'", rl_completer_word_break_characters);
   var_setvalue (var, rl_completer_word_break_characters);
 
   return (var);
@@ -1384,6 +1385,7 @@ assign_comp_wordbreaks (self, value, unused)
     free (rl_completer_word_break_characters);
 
   rl_completer_word_break_characters = savestring (value);
+itrace("assign: rl_completer_word_break_characters = `%s'", rl_completer_word_break_characters);
   return self;
 }
 #endif /* READLINE */
@@ -3924,6 +3926,18 @@ stupidly_hack_special_variables (name)
     (*(special_vars[i].function)) (name);
 }
 
+/* Special variables that need hooks to be run when they are unset as part
+   of shell reinitialization should have their sv_ functions run here. */
+void
+reinit_special_variables ()
+{
+#if defined (READLINE)
+  sv_comp_wordbreaks ("COMP_WORDBREAKS");
+#endif
+  sv_globignore ("GLOBIGNORE");
+  sv_opterr ("OPTERR");
+}
+
 void
 sv_ifs (name)
      char *name;
index 79004210ef20cb5101c5969c0e83fd0077dac26d..5163c76d11b7aadf50acdb7bb1dc9477aea2a3ae 100644 (file)
@@ -362,8 +362,6 @@ initialize_shell_variables (env, privmode)
          VSETATTR (temp_var, (att_exported | att_imported));
          array_needs_making = 1;
        }
-else
-  internal_error (_("`%s': not a valid identifier"), name);
 
       name[char_index] = '=';
       /* temp_var can be NULL if it was an exported function with a syntax
@@ -1368,6 +1366,7 @@ get_comp_wordbreaks (var)
   if (rl_completer_word_break_characters == 0 && bash_readline_initialized == 0)
     enable_hostname_completion (perform_hostname_completion);
 
+itrace("get: rl_completer_word_break_characters = `%s'", rl_completer_word_break_characters);
   var_setvalue (var, rl_completer_word_break_characters);
 
   return (var);
@@ -1386,6 +1385,7 @@ assign_comp_wordbreaks (self, value, unused)
     free (rl_completer_word_break_characters);
 
   rl_completer_word_break_characters = savestring (value);
+itrace("assign: rl_completer_word_break_characters = `%s'", rl_completer_word_break_characters);
   return self;
 }
 #endif /* READLINE */
index cc62174099686a67a479c598f090f1e1a64bbf91..9e5ab162073b074e5dc7a41fae10765bfbd1621a 100644 (file)
@@ -325,6 +325,10 @@ extern void set_pipestatus_from_exit __P((int));
    is one of the special ones where something special happens. */
 extern void stupidly_hack_special_variables __P((char *));
 
+/* Reinitialize some special variables that have external effects upon unset
+   when the shell reinitializes itself. */
+extern void reinit_special_variables __P((void));
+
 extern int get_random_number __P((void));
 
 /* The `special variable' functions that get called when a particular
index 1ce9cea93e8adcbd5d865b8908a04d03482ba257..cc62174099686a67a479c598f090f1e1a64bbf91 100644 (file)
@@ -109,7 +109,7 @@ typedef struct _vlist {
 #define att_assoc      0x0000040       /* variable is an associative array */
 #define att_trace      0x0000080       /* function is traced with DEBUG trap */
 
-#define user_attrs     (att_exported|att_readonly|att_array|att_integer|att_local|att_assoc|att_trace)
+#define user_attrs     (att_exported|att_readonly|att_integer|att_local|att_trace)
 
 #define attmask_user   0x0000fff