summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2011-12-07 09:23:48 -0500
committerChet Ramey <chet.ramey@case.edu>2011-12-07 09:23:48 -0500
commit33fe8777ceb37428666ade0fa64dbac94d6b8fe5 (patch)
tree73797f03e5ae1560988384227dca480417b541b9
parentf13513ff9ecac9ed83d930fab26329cd7aba4885 (diff)
downloadbash-33fe8777ceb37428666ade0fa64dbac94d6b8fe5.tar.gz
commit bash-20080515 snapshot
-rw-r--r--CWRU/CWRU.chlog51
-rw-r--r--CWRU/CWRU.chlog~49
-rw-r--r--MANIFEST3
-rw-r--r--MANIFEST~4
-rw-r--r--Makefile.in2
-rw-r--r--Makefile.in~8
-rw-r--r--bashline.c8
-rw-r--r--bashline.c~4
-rw-r--r--bashline.h1
-rw-r--r--bashline.h~49
-rw-r--r--builtins/break.def4
-rw-r--r--builtins/break.def~6
-rw-r--r--doc/bash.112
-rw-r--r--doc/bash.1~6
-rw-r--r--lib/readline/display.c10
-rw-r--r--lib/readline/display.c~22
-rw-r--r--po/LINGUAS2
-rw-r--r--po/lt.po2527
-rw-r--r--shell.c10
-rw-r--r--shell.c~13
-rw-r--r--subst.c5
-rwxr-xr-xsupport/checkbashisms172
-rwxr-xr-xtests/RUN-ONE-TEST2
-rw-r--r--variables.c14
-rw-r--r--variables.c~4
-rw-r--r--variables.h4
-rw-r--r--variables.h~2
27 files changed, 2962 insertions, 32 deletions
diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog
index e3c3596a..1f867449 100644
--- a/CWRU/CWRU.chlog
+++ b/CWRU/CWRU.chlog
@@ -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()
diff --git a/CWRU/CWRU.chlog~ b/CWRU/CWRU.chlog~
index dac5a095..ff2d394f 100644
--- a/CWRU/CWRU.chlog~
+++ b/CWRU/CWRU.chlog~
@@ -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
diff --git a/MANIFEST b/MANIFEST
index afed7617..df394de4 100644
--- 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
diff --git a/MANIFEST~ b/MANIFEST~
index 1d8de95b..8be34a8a 100644
--- 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
diff --git a/Makefile.in b/Makefile.in
index e6b0aa3d..8251d39f 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -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
diff --git a/Makefile.in~ b/Makefile.in~
index 6dc595c9..e6b0aa3d 100644
--- a/Makefile.in~
+++ b/Makefile.in~
@@ -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
diff --git a/bashline.c b/bashline.c
index 9e529cc2..4ff35909 100644
--- a/bashline.c
+++ b/bashline.c
@@ -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
diff --git a/bashline.c~ b/bashline.c~
index 84f5f3df..79831544 100644
--- a/bashline.c~
+++ b/bashline.c~
@@ -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);
}
diff --git a/bashline.h b/bashline.h
index eac5d353..cd84d879 100644
--- a/bashline.h
+++ b/bashline.h
@@ -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
index 00000000..eac5d353
--- /dev/null
+++ b/bashline.h~
@@ -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_ */
diff --git a/builtins/break.def b/builtins/break.def
index 407b6936..76326f0a 100644
--- a/builtins/break.def
+++ b/builtins/break.def
@@ -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
diff --git a/builtins/break.def~ b/builtins/break.def~
index e5f8a9c8..4f4c6c4b 100644
--- a/builtins/break.def~
+++ b/builtins/break.def~
@@ -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
diff --git a/doc/bash.1 b/doc/bash.1
index dafaf84a..f5207ff7 100644
--- a/doc/bash.1
+++ b/doc/bash.1
@@ -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
diff --git a/doc/bash.1~ b/doc/bash.1~
index e7c5f739..dafaf84a 100644
--- a/doc/bash.1~
+++ b/doc/bash.1~
@@ -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
diff --git a/lib/readline/display.c b/lib/readline/display.c
index 24dbe839..8a83e121 100644
--- a/lib/readline/display.c
+++ b/lib/readline/display.c
@@ -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
diff --git a/lib/readline/display.c~ b/lib/readline/display.c~
index 3dad963a..322fe2b1 100644
--- a/lib/readline/display.c~
+++ b/lib/readline/display.c~
@@ -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;
diff --git a/po/LINGUAS b/po/LINGUAS
index 15e4132d..b6262405 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -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
index 00000000..5cdde2e1
--- /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 379bb09c..fac78dca 100644
--- a/shell.c
+++ b/shell.c
@@ -71,6 +71,10 @@
# 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;
}
diff --git a/shell.c~ b/shell.c~
index a5f74bbc..b69204f7 100644
--- a/shell.c~
+++ b/shell.c~
@@ -71,6 +71,10 @@
# 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 639d9795..6cc70a51 100644
--- 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
index 00000000..acd93a9a
--- /dev/null
+++ b/support/checkbashisms
@@ -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;
diff --git a/tests/RUN-ONE-TEST b/tests/RUN-ONE-TEST
index 72ec06a2..3efcf32d 100755
--- a/tests/RUN-ONE-TEST
+++ b/tests/RUN-ONE-TEST
@@ -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
diff --git a/variables.c b/variables.c
index 0c4226a5..b04b1f8e 100644
--- a/variables.c
+++ b/variables.c
@@ -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;
diff --git a/variables.c~ b/variables.c~
index 79004210..5163c76d 100644
--- a/variables.c~
+++ b/variables.c~
@@ -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 */
diff --git a/variables.h b/variables.h
index cc621740..9e5ab162 100644
--- a/variables.h
+++ b/variables.h
@@ -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
diff --git a/variables.h~ b/variables.h~
index 1ce9cea9..cc621740 100644
--- a/variables.h~
+++ b/variables.h~
@@ -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