]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
commit bash-20100211 snapshot
authorChet Ramey <chet.ramey@case.edu>
Tue, 13 Dec 2011 02:54:17 +0000 (21:54 -0500)
committerChet Ramey <chet.ramey@case.edu>
Tue, 13 Dec 2011 02:54:17 +0000 (21:54 -0500)
CWRU/CWRU.chlog
po/vi.po
variables.c

index 1f596b1ea5aa7348d261c795d124586d7a735e67..942133ec23a706abefee2aabc065d222831135d7 100644 (file)
@@ -9478,3 +9478,13 @@ shell.c
          foo in an executable shell script without a leading `#!' (fixes
          longstanding bug)
 
+                                   2/8
+                                   ---
+variables.c
+       - in push_func_var, if a variable is in a special builtin's temporary
+         environment and needs to be propagated because we're in Posix mode,
+         or we just need to propagate a variable, and we are executing in a
+         function without any local variables (so the function-local variable
+         context has no variable hash table), make sure we create a hash
+         table so we have a place to save the variable to be propagated.
+         Fixes bug reported by Crestez Dan Leonard <cdleonard@gmail.com>.
index beb59d8e411fbecf7af86323321e123dead15a5a..16ef5fda41a2602680cc31bff3bfbbe1eb61785c 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -1,14 +1,14 @@
 # Vietnamese translation for BASH (Bourne Again SHell).
-# Copyright © 2009 Free Software Foundation, Inc.
+# Copyright © 2010 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
-# Clytie Siddall <clytie@riverland.net.au>, 2008-2009.
+# Clytie Siddall <clytie@riverland.net.au>, 2008, 2009, 2010.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.0\n"
+"Project-Id-Version: bash 4.1\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-12-30 08:25-0500\n"
-"PO-Revision-Date: 2009-09-19 21:17+0930\n"
+"PO-Revision-Date: 2010-02-11 19:42+0930\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
 "MIME-Version: 1.0\n"
@@ -53,8 +53,7 @@ msgstr "bash_execute_unix_command: không tìm thấy sơ đồ phím cho câu l
 #: bashline.c:3543
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
-msgstr ""
-"%s: ký tự khác khoảng trắng đầu tiên không phải là dấu sổ chéo ngược « / »"
+msgstr "%s: ký tự khác khoảng trắng đầu tiên không phải là dấu sổ chéo ngược « / »"
 
 #: bashline.c:3572
 #, c-format
@@ -67,9 +66,9 @@ msgid "%s: missing colon separator"
 msgstr "%s: thiếu dấu hai chấm định giới"
 
 #: builtins/alias.def:132
-#, fuzzy, c-format
+#, c-format
 msgid "`%s': invalid alias name"
-msgstr "« %s »: tên sơ đồ phím không hợp lệ"
+msgstr "« %s »: sai đặt tên bí danh"
 
 #: builtins/bind.def:120 builtins/bind.def:123
 msgid "line editing not enabled"
@@ -132,6 +131,8 @@ msgid ""
 ".  With EXPR, returns\n"
 "    "
 msgstr ""
+".  Cũng dùng BTHỨC thì trả lại\n"
+"    "
 
 #: builtins/caller.def:136
 msgid ""
@@ -141,6 +142,11 @@ msgid ""
 "    The value of EXPR indicates how many call frames to go back before the\n"
 "    current one; the top frame is frame 0."
 msgstr ""
+"; thông tin thêm này có thể được sử dụng\n"
+"\tđể cung cấp một vết đống (stack trace).\n"
+"\n"
+"\tGiá trị của BTHỨC ngụ ý bao nhiêu khung gọi cần lùi lại\n"
+"\ttương đối với cái hiện thời; khung trên cùng là khung 0."
 
 #: builtins/cd.def:215
 msgid "HOME not set"
@@ -463,8 +469,7 @@ msgstr[0] "Câu lệnh trình bao tương ứng với từ khoá `"
 
 #: builtins/help.def:168
 #, c-format
-msgid ""
-"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
+msgid "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
 msgstr ""
 "không có chủ đề trợ giúp tương ứng với « %s ». Hãy thử câu lệnh:\n"
 " • help help\n"
@@ -490,8 +495,7 @@ msgstr ""
 "Những câu lệnh trình bao này được xác định nội bộ. Hãy gõ :\n"
 " • help\t\tđể xem danh sách này.\n"
 " • info bash\tđể tìm thêm thông tin chung về trình bao.\n"
-" • man -k\t} • info\t\t} để tìm thêm thông tin về lệnh không có trong danh "
-"sách này.\n"
+" • man -k\t} • info\t\t} để tìm thêm thông tin về lệnh không có trong danh sách này.\n"
 "\n"
 "Dấu sao « * » bên cạnh tên thì ngụ ý nó bị tắt.\n"
 "\n"
@@ -532,9 +536,9 @@ msgid "expression expected"
 msgstr "đợi biểu thức"
 
 #: builtins/mapfile.def:165
-#, fuzzy, c-format
+#, c-format
 msgid "%s: not an indexed array"
-msgstr "%s: không phải biến mảng"
+msgstr "%s: không phải biến phụ lục"
 
 #: builtins/mapfile.def:249 builtins/read.def:279
 #, c-format
@@ -619,12 +623,10 @@ msgid ""
 "    \twith its position in the stack\n"
 "    \n"
 "    Arguments:\n"
-"      +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\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"
+"      -N\tDisplays the Nth entry counting from the right of the list shown by\n"
 "\tdirs when invoked without options, starting with zero."
 msgstr ""
 "Hiển thị danh sách các thư mục được nhớ hiện thời.\n"
@@ -747,8 +749,7 @@ msgstr "lỗi đọc: %d: %s"
 
 #: builtins/return.def:73
 msgid "can only `return' from a function or sourced script"
-msgstr ""
-"chỉ có thể « return » (trở về) từ một hàm hoặc văn lệnh được gọi từ nguồn"
+msgstr "chỉ có thể « return » (trở về) từ một hàm hoặc văn lệnh được gọi từ nguồn"
 
 #: builtins/set.def:768
 msgid "cannot simultaneously unset a function and a variable"
@@ -909,7 +910,7 @@ msgstr "%s: biến chưa tổ hợp"
 
 #: eval.c:181
 #, c-format
-msgid "\atimed out waiting for input: auto-logout\n"
+msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\tquá hạn trong khi đợi dữ liệu nhập nên tự động đăng xuất\n"
 
 #: execute_cmd.c:497
@@ -1139,7 +1140,7 @@ msgstr "%s: công việc %d đã chạy trong nền"
 
 #: jobs.c:3059
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr ""
+msgstr "waitchld: đang bật WNOHANG để tránh bị chặn vô hạn"
 
 #: jobs.c:3508
 #, c-format
@@ -1198,9 +1199,7 @@ msgstr "không rõ"
 
 #: lib/malloc/malloc.c:797
 msgid "malloc: block on free list clobbered"
-msgstr ""
-"malloc (cấp phát bộ nhớ): khối bộ nhớ dành riêng trên danh sách các khối còn "
-"rảnh bị ghi vào"
+msgstr "malloc (cấp phát bộ nhớ): khối bộ nhớ dành riêng trên danh sách các khối còn rảnh bị ghi vào"
 
 #: lib/malloc/malloc.c:874
 msgid "free: called with already freed block argument"
@@ -1271,22 +1270,22 @@ msgstr "không hỗ trợ thao tác mạng"
 #: locale.c:192
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
-msgstr ""
+msgstr "setlocale: LC_ALL: không thể chuyển đổi miền địa phương (%s)"
 
 #: locale.c:194
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-msgstr ""
+msgstr "setlocale: LC_ALL: không thể chuyển đổi miền địa phương (%s): %s"
 
 #: locale.c:247
-#, fuzzy, c-format
+#, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
-msgstr "xrealloc: %s:%d: không thể cấp phát %lu byte"
+msgstr "setlocale: %s: không thể chuyển đổi miền địa phương (%s)"
 
 #: locale.c:249
-#, fuzzy, c-format
+#, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr "xrealloc: %s:%d: không thể cấp phát %lu byte"
+msgstr "setlocale: %s: không thể chuyển đổi miền địa phương (%s): %s"
 
 #: mailcheck.c:433
 msgid "You have mail in $_"
@@ -1322,8 +1321,7 @@ msgstr "make_here_document: kiểu chỉ dẫn sai %d"
 #: make_cmd.c:659
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr ""
-"tài liệu này ở dòng %d định giới bằng kết thúc tập tin (mong đợi « %s »)"
+msgstr "tài liệu này ở dòng %d định giới bằng kết thúc tập tin (mong đợi « %s »)"
 
 #: make_cmd.c:756
 #, c-format
@@ -1424,8 +1422,7 @@ msgstr "Dùng « %s » để rời trình bao.\n"
 
 #: parse.y:5711
 msgid "unexpected EOF while looking for matching `)'"
-msgstr ""
-"gặp kết thúc tập tin bất thường trong khi tìm dấu ngoặc đóng « ) » tương ứng"
+msgstr "gặp kết thúc tập tin bất thường trong khi tìm dấu ngoặc đóng « ) » tương ứng"
 
 #: pcomplete.c:1030
 #, c-format
@@ -1443,18 +1440,19 @@ msgid "print_command: bad connector `%d'"
 msgstr "print_command: bộ kết nối sai « %d »"
 
 #: print_cmd.c:363
-#, fuzzy, c-format
+#, c-format
 msgid "xtrace_set: %d: invalid file descriptor"
-msgstr "%d: bộ mô tả tập tin không hợp lệ: %s"
+msgstr "xtrace_set: %d: sai đặt bộ mô tả tập tin"
 
 #: print_cmd.c:368
 msgid "xtrace_set: NULL file pointer"
-msgstr ""
+msgstr "xtrace_set: con trỏ tập tin NULL (vô giá trị)"
 
+# Nghĩa chữ ?
 #: print_cmd.c:372
 #, c-format
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
-msgstr ""
+msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
 #: print_cmd.c:1461
 #, c-format
@@ -1486,14 +1484,13 @@ msgid "cannot create temp file for here-document: %s"
 msgstr "không thể tạo tập tin tạm thời cho tài liệu này: %s"
 
 #: redir.c:184
-#, fuzzy, c-format
+#, c-format
 msgid "%s: cannot assign fd to variable"
-msgstr "%s: không thể gán danh sách cho bộ phận của mảng"
+msgstr "%s: không thể gán cho biến bộ bô tả tập tin"
 
 #: redir.c:544
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr ""
-"/dev/(tcp|udp)/host/port không được hỗ trợ khi không có chức năng chạy mạng"
+msgstr "/dev/(tcp|udp)/host/port không được hỗ trợ khi không có chức năng chạy mạng"
 
 #: redir.c:1101
 msgid "redirection error: cannot duplicate fd"
@@ -1550,16 +1547,12 @@ msgstr "\t-%s hoặc -o tùy chọn\n"
 #: shell.c:1822
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-"Gõ câu lệnh trợ giúp « %s -c \"help set\" » để xem thêm thông tin về các tùy "
-"chọn trình bao.\n"
+msgstr "Gõ câu lệnh trợ giúp « %s -c \"help set\" » để xem thêm thông tin về các tùy chọn trình bao.\n"
 
 #: shell.c:1823
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr ""
-"Gõ câu lệnh trợ giúp « %s -c help » để xem thêm thông tin về các câu lệnh "
-"trình bao dựng sẵn.\n"
+msgstr "Gõ câu lệnh trợ giúp « %s -c help » để xem thêm thông tin về các câu lệnh trình bao dựng sẵn.\n"
 
 #: shell.c:1824
 #, c-format
@@ -1806,10 +1799,8 @@ msgid "$%s: cannot assign in this way"
 msgstr "$%s: không thể gán bằng cách này"
 
 #: subst.c:7374
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr ""
+msgid "future versions of the shell will force evaluation as an arithmetic substitution"
+msgstr "phiên bản trình bao mới sẽ ép buộc ước lượng dưới dạng một hàm thay thế số học"
 
 #: subst.c:7839
 #, c-format
@@ -1864,11 +1855,8 @@ msgstr "run_pending_traps: giá trị sai trong danh sách trap_list[%d]: %p"
 
 #: trap.c:331
 #, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-"run_pending_traps: bộ xử lý tín hiệu là SIG_DFL, đang gửi lại %d (%s) cho "
-"mình"
+msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr "run_pending_traps: bộ xử lý tín hiệu là SIG_DFL, đang gửi lại %d (%s) cho mình"
 
 #: trap.c:380
 #, c-format
@@ -1894,9 +1882,9 @@ msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: không có ngữ cảnh hàm ở phạm vi hiện thời"
 
 #: variables.c:3376
-#, fuzzy, c-format
+#, c-format
 msgid "%s has null exportstr"
-msgstr "%s: tham số vô giá trị hoặc chưa được đặt"
+msgstr "%s có chuỗi xuất (exportstr) vô giá trị"
 
 #: variables.c:3381 variables.c:3390
 #, c-format
@@ -1910,42 +1898,33 @@ msgstr "không có dấu bằng « = » trong chuỗi exportstr cho %s"
 
 #: variables.c:3835
 msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
-"pop_var_context: đầu của shell_variables (các biến trình bao) không phải là "
-"ngữ cảnh hàm"
+msgstr "pop_var_context: đầu của shell_variables (các biến trình bao) không phải là ngữ cảnh hàm"
 
 #: variables.c:3848
 msgid "pop_var_context: no global_variables context"
-msgstr ""
-"pop_var_context: không có ngữ cảnh global_variables (các biến toàn cục)"
+msgstr "pop_var_context: không có ngữ cảnh global_variables (các biến toàn cục)"
 
 #: variables.c:3922
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
-"pop_scope: đầu của shell_variables (các biến trình bao) không phải là phạm "
-"vi môi trường tạm thời"
+msgstr "pop_scope: đầu của shell_variables (các biến trình bao) không phải là phạm vi môi trường tạm thời"
 
 #: variables.c:4678
-#, fuzzy, c-format
+#, c-format
 msgid "%s: %s: cannot open as FILE"
-msgstr "%s: không thể mở : %s"
+msgstr "%s: %s: không thể mở dưới dạng TẬP_TIN"
 
 #: variables.c:4683
-#, fuzzy, c-format
+#, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
-msgstr "%d: bộ mô tả tập tin không hợp lệ: %s"
+msgstr "%s: %s: sai đặt giá trị cho bộ mô tả tập tin vết"
 
 #: version.c:46
 msgid "Copyright (C) 2009 Free Software Foundation, Inc."
 msgstr "Tác quyền © năm 2009 của Tổ chức Phần mềm Tự do."
 
 #: version.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-"Giấy phép GPLv3+: Giấy Phép Công Cộng GNU phiên bản 3 hay sau <http://gnu."
-"org/licenses/gpl.html>\n"
+msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+msgstr "Giấy phép GPLv3+: Giấy Phép Công Cộng GNU phiên bản 3 hay sau <http://gnu.org/licenses/gpl.html>\n"
 
 #: version.c:86 version2.c:83
 #, c-format
@@ -1963,38 +1942,34 @@ msgid "There is NO WARRANTY, to the extent permitted by law.\n"
 msgstr "KHÔNG BẢO ĐẢM GÌ CẢ, với điều kiện được pháp luật cho phép.\n"
 
 #: version2.c:86
-#, fuzzy, c-format
+#, c-format
 msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-msgstr "Tác quyền © năm 2009 của Tổ chức Phần mềm Tự do."
+msgstr "Tác quyền © năm 2009 của Tổ chức Phần mềm Tự do.\n"
 
 #: version2.c:87
-#, fuzzy, c-format
-msgid ""
-"License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-"Giấy phép GPLv3+: Giấy Phép Công Cộng GNU phiên bản 3 hay sau <http://gnu."
-"org/licenses/gpl.html>\n"
+#, c-format
+msgid "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>\n"
+msgstr "Giấy phép GPLv2+: Giấy Phép Công Cộng GNU phiên bản 2 hay sau <http://gnu.org/licenses/gpl.html>\n"
 
 #: xmalloc.c:91
-#, fuzzy, c-format
+#, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "xmalloc: không thể cấp phát %lu byte (%lu byte đã cấp phát)"
+msgstr "%s: không thể cấp phát %lu byte (%lu byte được cấp phát)"
 
 #: xmalloc.c:93
-#, fuzzy, c-format
+#, c-format
 msgid "%s: cannot allocate %lu bytes"
-msgstr "xmalloc: không thể cấp phát %lu byte"
+msgstr "%s: không thể cấp phát %lu byte"
 
 #: xmalloc.c:163
-#, fuzzy, c-format
+#, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "xmalloc: %s:%d: không thể cấp phát %lu byte (%lu byte đã cấp phát)"
+msgstr "%s: %s:%d: không thể cấp phát %lu byte (%lu byte được cấp phát)"
 
 #: xmalloc.c:165
-#, fuzzy, c-format
+#, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr "xmalloc: %s:%d: không thể cấp phát %lu byte"
+msgstr "%s: %s:%d: không thể cấp phát %lu byte"
 
 #: builtins.c:43
 msgid "alias [-p] [name[=value] ... ]"
@@ -2005,13 +1980,8 @@ msgid "unalias [-a] name [name ...]"
 msgstr "unalias [-a] tên [tên ...]"
 
 #: builtins.c:51
-msgid ""
-"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-"bind [-lpvsPVS] [-m sơ_đồ_phím] [-f tên_tập_tin] [-q tên] [-u tên] [-r "
-"dãy_phím] [-x dãy_phím:lệnh_trình_bao] [dãy_phím:chức_năng-readline hay lệnh-"
-"readline]"
+msgid "bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr "bind [-lpvsPVS] [-m sơ_đồ_phím] [-f tên_tập_tin] [-q tên] [-u tên] [-r dãy_phím] [-x dãy_phím:lệnh_trình_bao] [dãy_phím:chức_năng-readline hay lệnh-readline]"
 
 #: builtins.c:54
 msgid "break [n]"
@@ -2117,14 +2087,11 @@ msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
 msgstr "hash [-lr] [-p đường_dẫn] [-dt] [tên ...]"
 
 #: builtins.c:117
-#, fuzzy
 msgid "help [-dms] [pattern ...]"
-msgstr "help [-ds] [mẫu ...]"
+msgstr "help [-dms] [mẫu ...]"
 
 #: builtins.c:121
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
+msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
 msgstr ""
 "history [-c] [-d hiệu] [n]\n"
 "\thay\n"
@@ -2144,12 +2111,9 @@ msgid "disown [-h] [-ar] [jobspec ...]"
 msgstr "disown [-h] [-ar] [đặc_tả_công_việc ...]"
 
 #: builtins.c:132
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
+msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
 msgstr ""
-"kill [-s đặc_tả_tín_hiệu | -n số_tín_hiệu | -đặc_tả_tín_hiệu] pid | "
-"đặc_tả_công_việc ...\n"
+"kill [-s đặc_tả_tín_hiệu | -n số_tín_hiệu | -đặc_tả_tín_hiệu] pid | đặc_tả_công_việc ...\n"
 "\thay\n"
 "kill -l [đặc_tả_tín_hiệu]"
 
@@ -2158,13 +2122,8 @@ msgid "let arg [arg ...]"
 msgstr "let đối_số [đối_số ...]"
 
 #: builtins.c:136
-#, fuzzy
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-"read [-ers] [-a mảng] [-d giới_hạn] [-i văn_bản] [-n số_ký_tự] [-p nhắc] [-t "
-"thời_hạn] [-u fd] [tên ...]"
+msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
+msgstr "read [-ers] [-a mảng] [-d giới_hạn] [-i văn_bản] [-n số_ký_tự] [-N số_ký_tự] [-p nhắc] [-t thời_hạn] [-u fd] [tên ...]"
 
 # nghĩa chữ
 #: builtins.c:138
@@ -2266,12 +2225,8 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
 msgstr "case TỪ in [MẪU [| MẪU]...) các_CÂU_LỆNH ;;]... esac"
 
 #: builtins.c:192
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-"if các_CÂU_LỆNH; then các_CÂU_LỆNH; [ elif các_CÂU_LỆNH; then "
-"các_CÂU_LỆNH; ]... [ else các_CÂU_LỆNH; ] fi"
+msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
+msgstr "if các_CÂU_LỆNH; then các_CÂU_LỆNH; [ elif các_CÂU_LỆNH; then các_CÂU_LỆNH; ]... [ else các_CÂU_LỆNH; ] fi"
 
 #: builtins.c:194
 msgid "while COMMANDS; do COMMANDS; done"
@@ -2333,44 +2288,24 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v biến] định_dạng [đối_số]"
 
 #: builtins.c:229
-#, fuzzy
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
-"W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-o tùy_chọn] [-A hành_động] [-G mẫu_glob] [-"
-"W danh_sách_từ]  [-F hàm] [-C lệnh] [-X mẫu_lọc] [-P tiền_tố] [-S hậu_tố] "
-"[tên ...]"
+msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
+msgstr "complete [-abcdefgjksuv] [-pr] [-DE] [-o tùy_chọn] [-A hành_động] [-G mẫu_glob] [-W danh_sách_từ]  [-F hàm] [-C lệnh] [-X mẫu_lọc] [-P tiền_tố] [-S hậu_tố] [tên ...]"
 
 #: builtins.c:233
-msgid ""
-"compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat] [-W wordlist]  "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-"compgen [-abcdefgjksuv] [-o tùy_chọn]  [-A hành_động] [-G mẫu_glob] [-W "
-"danh_sách_từ]  [-F hàm] [-C lệnh] [-X mẫu_lọc] [-P tiền_tố] [-S hậu_tố] [từ]"
+msgid "compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr "compgen [-abcdefgjksuv] [-o tùy_chọn]  [-A hành_động] [-G mẫu_glob] [-W danh_sách_từ]  [-F hàm] [-C lệnh] [-X mẫu_lọc] [-P tiền_tố] [-S hậu_tố] [từ]"
 
 #: builtins.c:237
-#, fuzzy
 msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o tùy_chọn] [tên ...]"
+msgstr "compopt [-o|+o tùy_chọn] [-DE] [tên ...]"
 
 #: builtins.c:240
-msgid ""
-"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-"mapfile [-n đếm] [-O gốc] [-s đếm] [-t] [-u fd] [-C gọi_ngược] [-c lượng] "
-"[mảng]"
+msgid "mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "mapfile [-n đếm] [-O gốc] [-s đếm] [-t] [-u fd] [-C gọi_ngược] [-c lượng] [mảng]"
 
 #: builtins.c:242
-msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-"readarray [-n đếm] [-O gốc] [-s đếm] [-t] [-u fd] [-C gọi_ngược] [-c lượng] "
-"[mảng]"
+msgid "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "readarray [-n đếm] [-O gốc] [-s đếm] [-t] [-u fd] [-C gọi_ngược] [-c lượng] [mảng]"
 
 #: builtins.c:254
 msgid ""
@@ -2387,8 +2322,7 @@ msgid ""
 "      -p\tPrint all defined aliases in a reusable format\n"
 "    \n"
 "    Exit Status:\n"
-"    alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
+"    alias returns true unless a NAME is supplied for which no alias has been\n"
 "    defined."
 msgstr ""
 "Xác định hoặc hiển thị bí danh.\n"
@@ -2436,24 +2370,20 @@ msgid ""
 "    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"
+"                         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"
-"      -S                 List key sequences that invoke macros and their "
-"values\n"
-"      -s                 List key sequences that invoke macros and their "
-"values\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.\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"
 "      -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"
+"      -u  function-name  Unbind all keys which are bound to the named function.\n"
 "      -r  keyseq         Remove the binding for KEYSEQ.\n"
 "      -f  filename       Read key bindings from FILENAME.\n"
 "      -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
@@ -2540,8 +2470,7 @@ msgid ""
 "    \n"
 "    Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
 "    lookup.  This is useful when you wish to reimplement a shell builtin\n"
-"    as a shell function, but need to execute the builtin within the "
-"function.\n"
+"    as a shell function, but need to execute the builtin within the function.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
@@ -2592,22 +2521,16 @@ msgstr ""
 msgid ""
 "Change the shell working directory.\n"
 "    \n"
-"    Change the current directory to DIR.  The default DIR is the value of "
-"the\n"
+"    Change the current directory to DIR.  The default DIR is the value of the\n"
 "    HOME shell variable.\n"
 "    \n"
-"    The variable CDPATH defines the search path for the directory "
-"containing\n"
-"    DIR.  Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-"    A null directory name is the same as the current directory.  If DIR "
-"begins\n"
+"    The variable CDPATH defines the search path for the directory containing\n"
+"    DIR.  Alternative directory names in CDPATH are separated by a colon (:).\n"
+"    A null directory name is the same as the current directory.  If DIR begins\n"
 "    with a slash (/), then CDPATH is not used.\n"
 "    \n"
-"    If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-"    the word is assumed to be  a variable name.  If that variable has a "
-"value,\n"
+"    If the directory is not found, and the shell option `cdable_vars' is set,\n"
+"    the word is assumed to be  a variable name.  If that variable has a value,\n"
 "    its value is used for DIR.\n"
 "    \n"
 "    Options:\n"
@@ -2626,8 +2549,7 @@ msgstr ""
 "\tThư mục mặc định là giá trị của biến trình bao HOME.\n"
 "\n"
 "\tBiến CDPATH thì xác định đường dẫn tìm kiếm cho thư mục chứa TMỤC.\n"
-"\tCác tên thư mục xen kẽ trong CDPATH cũng định giới bằng dấu hai chấm « : "
-"».\n"
+"\tCác tên thư mục xen kẽ trong CDPATH cũng định giới bằng dấu hai chấm « : ».\n"
 "\tMột tên thư mục trống tương đương với thư mục hiện tại.\n"
 "\tNếu TMỤC bắt đầu với dấu chéo « / » thì không dùng CDPATH.\n"
 "\n"
@@ -2717,8 +2639,7 @@ msgid ""
 "Execute a simple command or display information about commands.\n"
 "    \n"
 "    Runs COMMAND with ARGS suppressing  shell function lookup, or display\n"
-"    information about the specified COMMANDs.  Can be used to invoke "
-"commands\n"
+"    information about the specified COMMANDs.  Can be used to invoke commands\n"
 "    on disk when a function with the same name exists.\n"
 "    \n"
 "    Options:\n"
@@ -2743,8 +2664,7 @@ msgstr ""
 "\t-V\tin ra mô tả chi tiết hơn về mỗi câu LỆNH\n"
 "\n"
 "Trạng thái thoát:\n"
-"Trả lại trạng thái thoát của câu LỆNH, hoặc bị lỗi nếu không tìm thấy câu "
-"LỆNH."
+"Trả lại trạng thái thoát của câu LỆNH, hoặc bị lỗi nếu không tìm thấy câu LỆNH."
 
 #: builtins.c:476
 msgid ""
@@ -2774,8 +2694,7 @@ msgid ""
 "    Variables with the integer attribute have arithmetic evaluation (see\n"
 "    the `let' command) performed when the variable is assigned a value.\n"
 "    \n"
-"    When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
+"    When used in a function, `declare' makes NAMEs local, as with the `local'\n"
 "    command.\n"
 "    \n"
 "    Exit Status:\n"
@@ -2903,8 +2822,7 @@ msgstr ""
 "\t\t\\xHH\tký tự 8-bit có giá trị HH (1-2 chữ số thập lục)\n"
 "\n"
 "\tTrạng thái thoát:\n"
-"\tTrả lại thành công nếu không gặp lỗi ghi.\t\t\\t\tkhoảng tab theo chiều "
-"ngang\n"
+"\tTrả lại thành công nếu không gặp lỗi ghi.\t\t\\t\tkhoảng tab theo chiều ngang\n"
 "\t\t\\v\tkhoảng tab theo chiều dọc\n"
 "\t\t\\\\\tgạch chéo ngược"
 
@@ -2957,16 +2875,14 @@ msgid ""
 "    Returns success unless NAME is not a shell builtin or an error occurs."
 msgstr ""
 "Bật/tắt dựng sẵn trình bao.\n"
-"\b\tBật và tắt các dựng sẵn trình bao.\b\tChức năng tắt thì cho phép bạn "
-"thực thi một câu lệnh đĩa\n"
+"\b\tBật và tắt các dựng sẵn trình bao.\b\tChức năng tắt thì cho phép bạn thực thi một câu lệnh đĩa\n"
 "\tmà cùng tên với một dựng sẵn trình bao,\n"
 "\tkhông cần dùng tên đường dẫn đầy đủ.\n"
 "\n"
 "\tTùy chọn:\n"
 "\t\t-a\tin ra một danh sách các dựng sẳn, cũng hiển thị trạng thái bật/tắt\n"
 "\t\t-b\ttắt mỗi TÊN hoặc hiển thị danh sách các dựng sẵn bị tắt\n"
-"\t\t-p\tin ra danh sách các dựng sẵn theo một định dạng có thể dùng lại "
-"được\n"
+"\t\t-p\tin ra danh sách các dựng sẵn theo một định dạng có thể dùng lại được\n"
 "\t\t-s\tin ra chỉ tên mỗi dựng sẵn Posix « đặc biệt »\n"
 "\n"
 "\tTùy chọn điều khiển chức năng nạp động:\n"
@@ -2986,8 +2902,7 @@ msgstr ""
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
-"    Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
+"    Combine ARGs into a single string, use the result as input to the shell,\n"
 "    and execute the resulting commands.\n"
 "    \n"
 "    Exit Status:\n"
@@ -3094,8 +3009,7 @@ msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
 "    Execute COMMAND, replacing this shell with the specified program.\n"
-"    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not "
-"specified,\n"
+"    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not specified,\n"
 "    any redirections take effect in the current shell.\n"
 "    \n"
 "    Options:\n"
@@ -3103,18 +3017,15 @@ msgid ""
 "      -c\t\texecute COMMAND with an empty environment\n"
 "      -l\t\tplace a dash in the zeroth argument to COMMAND\n"
 "    \n"
-"    If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
+"    If the command cannot be executed, a non-interactive shell exits, unless\n"
 "    the shell option `execfail' is set.\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success unless COMMAND is not found or a redirection error "
-"occurs."
+"    Returns success unless COMMAND is not found or a redirection error occurs."
 msgstr ""
 "Thay thế trình bao bằng câu lệnh đưa ra.\n"
 "\n"
-"\tThực thi câu LỆNH, cũng thay thế trình bao này bằng chương trình được ghi "
-"rõ.\n"
+"\tThực thi câu LỆNH, cũng thay thế trình bao này bằng chương trình được ghi rõ.\n"
 "\tCác ĐỐI_SỐ trở thành các đối số đối với câu LỆNH.\n"
 "\tKhông đưa ra câu LỆNH thì bất cứ việc chuyển hướng nào\n"
 "\tsẽ xảy ra trong trình bao đang chạy.\n"
@@ -3147,8 +3058,7 @@ msgstr ""
 msgid ""
 "Exit a login shell.\n"
 "    \n"
-"    Exits a login shell with exit status N.  Returns an error if not "
-"executed\n"
+"    Exits a login shell with exit status N.  Returns an error if not executed\n"
 "    in a login shell."
 msgstr ""
 "Thoát khỏi một trình bao đăng nhập.\n"
@@ -3160,15 +3070,13 @@ msgstr ""
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
-"    fc is used to list or edit and re-execute commands from the history "
-"list.\n"
+"    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"
 "    Options:\n"
-"      -e ENAME\tselect which editor to use.  Default is FCEDIT, then "
-"EDITOR,\n"
+"      -e ENAME\tselect which editor to use.  Default is FCEDIT, then EDITOR,\n"
 "    \t\tthen vi\n"
 "      -l \tlist lines instead of editing\n"
 "      -n\tomit line numbers when listing\n"
@@ -3182,8 +3090,7 @@ msgid ""
 "    the last command.\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success or status of executed command; non-zero if an error "
-"occurs."
+"    Returns success or status of executed command; non-zero if an error occurs."
 msgstr ""
 "Hiển thị hoặc thực thi các câu lệnh từ danh sách lược sử.\n"
 "\n"
@@ -3237,10 +3144,8 @@ msgstr ""
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
-"    Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-"    had been started with `&'.  If JOB_SPEC is not present, the shell's "
-"notion\n"
+"    Place the jobs identified by each JOB_SPEC in the background, as if they\n"
+"    had been started with `&'.  If JOB_SPEC is not present, the shell's notion\n"
 "    of the current job is used.\n"
 "    \n"
 "    Exit Status:\n"
@@ -3262,8 +3167,7 @@ msgid ""
 "Remember or display program locations.\n"
 "    \n"
 "    Determine and remember the full pathname of each command NAME.  If\n"
-"    no arguments are given, information about remembered commands is "
-"displayed.\n"
+"    no arguments are given, information about remembered commands is displayed.\n"
 "    \n"
 "    Options:\n"
 "      -d\t\tforget the remembered location of each NAME\n"
@@ -3319,8 +3223,7 @@ msgid ""
 "      PATTERN\tPattern specifiying a help topic\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success unless PATTERN is not found or an invalid option is "
-"given."
+"    Returns success unless PATTERN is not found or an invalid option is given."
 msgstr ""
 "Hiển thị thông tin về các câu lệnh dựng sẵn.\n"
 "\n"
@@ -3369,8 +3272,7 @@ msgid ""
 "    \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.\n"
+"    with each displayed history entry.  No time stamps are printed otherwise.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
@@ -3471,10 +3373,8 @@ msgid ""
 msgstr ""
 "Gỡ bỏ công việc khỏi trình bao đang chạy.\n"
 "\n"
-"\tGỡ bỏ mỗi đối số JOBSPEC (đặc tả công việc) khỏi bảng các công việc đang "
-"chạy.\n"
-"\tKhông có JOBSPEC thì trình bao dùng thông tin riêng về công việc đang đang "
-"chạy.\n"
+"\tGỡ bỏ mỗi đối số JOBSPEC (đặc tả công việc) khỏi bảng các công việc đang chạy.\n"
+"\tKhông có JOBSPEC thì trình bao dùng thông tin riêng về công việc đang đang chạy.\n"
 "\n"
 "\tTùy chọn:\n"
 "\t\t-a\tgỡ bỏ mọi công việc nếu không đưa ra JOBSPEC\n"
@@ -3534,8 +3434,7 @@ msgid ""
 "    Evaluate each ARG as an arithmetic expression.  Evaluation is done in\n"
 "    fixed-width integers with no check for overflow, though division by 0\n"
 "    is trapped and flagged as an error.  The following list of operators is\n"
-"    grouped into levels of equal-precedence operators.  The levels are "
-"listed\n"
+"    grouped into levels of equal-precedence operators.  The levels are listed\n"
 "    in order of decreasing precedence.\n"
 "    \n"
 "    \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3613,21 +3512,17 @@ msgstr ""
 "\tkhông thì let trả lại 0."
 
 #: builtins.c:966
-#, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
 "    Reads a single line from the standard input, or from file descriptor FD\n"
-"    if the -u option is supplied.  The line is split into fields as with "
-"word\n"
+"    if the -u option is supplied.  The line is split into fields as with word\n"
 "    splitting, and the first word is assigned to the first NAME, the second\n"
 "    word to the second NAME, and so on, with any leftover words assigned to\n"
-"    the last NAME.  Only the characters found in $IFS are recognized as "
-"word\n"
+"    the last NAME.  Only the characters found in $IFS are recognized as word\n"
 "    delimiters.\n"
 "    \n"
-"    If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
+"    If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
 "    \n"
 "    Options:\n"
 "      -a array\tassign the words read to sequential indices of the array\n"
@@ -3639,15 +3534,13 @@ msgid ""
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n"
 "    \t\tcharacters are read before the delimiter\n"
-"      -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
+"      -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
 "    \t\tEOF is encountered or read times out, ignoring any delimiter\n"
 "      -p prompt\toutput the string PROMPT without a trailing newline before\n"
 "    \t\tattempting to read\n"
 "      -r\t\tdo not allow backslashes to escape any characters\n"
 "      -s\t\tdo not echo input coming from a terminal\n"
-"      -t timeout\ttime out and return failure if a complete line of input "
-"is\n"
+"      -t timeout\ttime out and return failure if a complete line of input is\n"
 "    \t\tnot read withint TIMEOUT seconds.  The value of the TMOUT\n"
 "    \t\tvariable is the default timeout.  TIMEOUT may be a\n"
 "    \t\tfractional number.  If TIMEOUT is 0, read returns success only\n"
@@ -3656,8 +3549,7 @@ msgid ""
 "      -u fd\t\tread from file descriptor FD instead of the standard input\n"
 "    \n"
 "    Exit Status:\n"
-"    The return code is zero, unless end-of-file is encountered, read times "
-"out,\n"
+"    The return code is zero, unless end-of-file is encountered, read times out,\n"
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
 "Đọc một dòng từ đầu vào tiêu chuẩn, sau đó chia nó ra nhiều trường.\n"
@@ -3670,18 +3562,19 @@ msgstr ""
 "\tvà từ còn lại nào được gán cho TÊN cuối cùng.\n"
 "\tChỉ những ký tự được tìm trong $IFS được nhận ra là ký tự định giới từ.\n"
 "\n"
-"\tKhông đưa ra TÊN thì dòng được đọc sẽ được ghi nhớ vào biến REPLY (trả "
-"lời).\n"
+"\tKhông đưa ra TÊN thì dòng được đọc sẽ được ghi nhớ vào biến REPLY (đáp ứng).\n"
 "\n"
 "\tTùy chọn:\n"
-"\t\t-a MẢNG\tgán các từ được đọc cho những số mũ tuần tự\n"
+"\t\t-a mảng\tgán các từ được đọc cho những số mũ tuần tự\n"
 "\t\t\tcủa biến mảng MẢNG, bắt đầu từ số không.\n"
 "\t\t-d định_giới\ttiếp tục đến khi đọc ký tự đầu tiên của DELIM,\n"
 "\t\t\thơn là ký tự dòng mới\n"
 "\t\t-e\tdùng Readline để lấy dòng trong một trình bao tương tác\n"
 "\t\t-i chuỗi\tdùng chuỗi này như là văn bản đầu tiên cho Readline\n"
-"\t\t-n sá»\91_ky_tá»±\ttrá»\9f vá»\81 sau khi đọc số các ký tự này,\n"
+"\t\t-n sá»\91_ky_tá»±\ttrả lại sau khi đọc số các ký tự này,\n"
 "\t\t\thơn là đợi một ký tự dòng mới\n"
+"\t\t-N số_ký_tự\ttrả lại chỉ sau khi đọc chính xác số các ký tự này,\n"
+"\t\tnếu không gặp kết thúc tập tin (EOF) hay quá hạn đọc, cũng bỏ qua dấu tách nào\n"
 "\t\t-p nhắc\txuất chuỗi NHẮC mà không có ký tự dòng mới theo sau,\n"
 "\t\t\ttrước khi thử đọc\n"
 "\t\t-r\tđừng cho phép gạch chéo ngược thoát ký tự\n"
@@ -3697,7 +3590,7 @@ msgstr ""
 "\n"
 "\tTrạng thái thoát:\n"
 "\tMã trả lại là số không, nếu không gặp kết thúc tập tin,\n"
-"\tkhông quá thời khi đọc, và không đưa ra bộ mô tả tập tin sai\n"
+"\thay quá hạn đọc, hay đưa ra bộ mô tả tập tin sai\n"
 "\tlàm đối số tới « -u »."
 
 #: builtins.c:1009
@@ -3765,8 +3658,7 @@ msgid ""
 "              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"
+"                           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 Posix standard to\n"
 "                           match the standard\n"
@@ -3895,8 +3787,7 @@ msgid ""
 "      -f\ttreat each NAME as a shell function\n"
 "      -v\ttreat each NAME as a shell variable\n"
 "    \n"
-"    Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
+"    Without options, unset first tries to unset a variable, and if that fails,\n"
 "    tries to unset a function.\n"
 "    \n"
 "    Some variables cannot be unset; also see `readonly'.\n"
@@ -3923,8 +3814,7 @@ msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
 "    Marks each NAME for automatic export to the environment of subsequently\n"
-"    executed commands.  If VALUE is supplied, assign VALUE before "
-"exporting.\n"
+"    executed commands.  If VALUE is supplied, assign VALUE before exporting.\n"
 "    \n"
 "    Options:\n"
 "      -f\trefer to shell functions\n"
@@ -3938,8 +3828,7 @@ msgid ""
 msgstr ""
 "Đặt thuộc tính xuất khẩu cho biến trình bao.\n"
 "\n"
-"\tĐánh dấu mỗi TÊN để tự động xuất vào môi trường của câu lệnh được chạy về "
-"sau.\n"
+"\tĐánh dấu mỗi TÊN để tự động xuất vào môi trường của câu lệnh được chạy về sau.\n"
 "\tĐưa ra GIÁ_TRỊ thì gán GIÁ_TRỊ trước khi xuất ra.\n"
 "\n"
 "\tTùy chọn:\n"
@@ -4029,8 +3918,7 @@ msgstr ""
 "\tkhi TÊN_TẬP_TIN được thực thi.\n"
 "\n"
 "\tTrạng thái thoát:\n"
-"\tTrả lại trạng thái của câu lệnh cuối cùng được thực thi trong "
-"TÊN_TẬP_TIN;\n"
+"\tTrả lại trạng thái của câu lệnh cuối cùng được thực thi trong TÊN_TẬP_TIN;\n"
 "\tkhông thành công nếu không thể đọc TÊN_TẬP_TIN."
 
 #: builtins.c:1207
@@ -4055,8 +3943,7 @@ msgstr ""
 "\t\t-f\tép buộc việc ngưng, thậm chí nếu trình bao có kiểu đăng nhập\n"
 "\n"
 "\tTrạng thái thoát:\n"
-"\tTrả lại thành công nếu chức năng điều khiển công việc đã được bật, và "
-"không gặp lỗi."
+"\tTrả lại thành công nếu chức năng điều khiển công việc đã được bật, và không gặp lỗi."
 
 #: builtins.c:1223
 msgid ""
@@ -4089,8 +3976,7 @@ msgid ""
 "      -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 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"
@@ -4111,8 +3997,7 @@ msgid ""
 "      STRING1 != STRING2\n"
 "                     True if the strings are not equal.\n"
 "      STRING1 < STRING2\n"
-"                     True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
+"                     True if STRING1 sorts before STRING2 lexicographically.\n"
 "      STRING1 > STRING2\n"
 "                     True if STRING1 sorts after STRING2 lexicographically.\n"
 "    \n"
@@ -4150,27 +4035,22 @@ msgstr ""
 "        -e TẬP_TIN        Đúng nếu tập tin có phải tồn tại.\n"
 "        -f TẬP_TIN        Đúng nếu tập tin có phải tồn tại\n"
 "\t\t\t\t\tcũng là một tập tin bình thường.\n"
-"        -g TẬP_TIN        Đúng nếu tập tin là set-group-id (đặt mã số "
-"nhóm).\n"
+"        -g TẬP_TIN        Đúng nếu tập tin là set-group-id (đặt mã số nhóm).\n"
 "        -h TẬP_TIN        Đúng nếu tập tin là một liên kết tượng trưng.\n"
 "        -L TẬP_TIN        Đúng nếu tập tin là một liên kết tượng trưng.\n"
 "        -k TẬP_TIN        Đúng nếu tập tin có bit « dính » được đặt.\n"
 "        -p TẬP_TIN        Đúng nếu tập tin là một ống dẫn đặt tên.\n"
 "        -r TẬP_TIN        Đúng nếu tập tin cho bạn đọc được.\n"
-"        -s TẬP_TIN        Đúng nếu tập tin có phải tồn tại và không phải "
-"rỗng.\n"
+"        -s TẬP_TIN        Đúng nếu tập tin có phải tồn tại và không phải rỗng.\n"
 "        -S TẬP_TIN        Đúng nếu tập tin là một ổ cắm.\n"
-"        -t FD          Đúng nếu FD (bộ mô tả tập tin) được mở trên thiết bị "
-"cuối.\n"
+"        -t FD          Đúng nếu FD (bộ mô tả tập tin) được mở trên thiết bị cuối.\n"
 "        -u TẬP_TIN        Đúng nếu tập tin is set-user-id.\n"
 "        -w TẬP_TIN        Đúng nếu tập tin cho bạn ghi vào được.\n"
 "        -x TẬP_TIN        Đúng nếu tập tin cho bạn thực hiện được.\n"
-"        -O TẬP_TIN        Đúng nếu tập tin được bạn sở hữu một cách hiệu "
-"quả.\n"
+"        -O TẬP_TIN        Đúng nếu tập tin được bạn sở hữu một cách hiệu quả.\n"
 "        -G TẬP_TIN        Đúng nếu tập tin được nhóm của bạn sở hữu\n"
 "\t\t\t\t\tmột cách hiệu quả.\n"
-"        -N TẬP_TIN        Đúng nếu tập tin đã bị sửa đổi kể từ lần đọc cuối "
-"cùng.\n"
+"        -N TẬP_TIN        Đúng nếu tập tin đã bị sửa đổi kể từ lần đọc cuối cùng.\n"
 "    \n"
 "      TẬP_TIN1 -nt TẬP_TIN2  Đúng nếu tập tin 1 mới hơn tập tin 2\n"
 "\t\t(tùy theo ngày sửa đổi)\n"
@@ -4230,8 +4110,7 @@ msgstr ""
 msgid ""
 "Display process times.\n"
 "    \n"
-"    Prints the accumulated user and system times for the shell and all of "
-"its\n"
+"    Prints the accumulated user and system times for the shell and all of its\n"
 "    child processes.\n"
 "    \n"
 "    Exit Status:\n"
@@ -4249,8 +4128,7 @@ msgstr ""
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
-"    Defines and activates handlers to be run when the shell receives "
-"signals\n"
+"    Defines and activates handlers to be run when the shell receives signals\n"
 "    or other conditions.\n"
 "    \n"
 "    ARG is a command to be read and executed when the shell receives the\n"
@@ -4259,26 +4137,22 @@ msgid ""
 "    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
 "    shell and by the commands it invokes.\n"
 "    \n"
-"    If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.  "
-"If\n"
+"    If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.  If\n"
 "    a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.\n"
 "    \n"
-"    If no arguments are supplied, trap prints the list of commands "
-"associated\n"
+"    If no arguments are supplied, trap prints the list of commands associated\n"
 "    with each signal.\n"
 "    \n"
 "    Options:\n"
 "      -l\tprint a list of signal names and their corresponding numbers\n"
 "      -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
 "    \n"
-"    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
+"    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.\n"
 "    Signal names are case insensitive and the SIG prefix is optional.  A\n"
 "    signal may be sent to the shell with \"kill -signal $$\".\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
+"    Returns success unless a SIGSPEC is invalid or an invalid option is given."
 msgstr ""
 "Bắt các tín hiệu và dữ kiện khác.\n"
 "\n"
@@ -4341,8 +4215,7 @@ msgid ""
 "      NAME\tCommand name to be interpreted.\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success if all of the NAMEs are found; fails if any are not "
-"found."
+"    Returns success if all of the NAMEs are found; fails if any are not found."
 msgstr ""
 "Hiển thị thông tin về kiểu câu lệnh.\n"
 "\n"
@@ -4378,8 +4251,7 @@ msgstr ""
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
-"    Provides control over the resources available to the shell and "
-"processes\n"
+"    Provides control over the resources available to the shell and processes\n"
 "    it creates, on systems that allow such control.\n"
 "    \n"
 "    Options:\n"
@@ -4504,13 +4376,11 @@ msgid ""
 "    Waits for the process identified by ID, which may be a process ID or a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a a job specification, waits for all processes\n"
 "    in the job's pipeline.\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
+"    Returns the status of ID; fails if ID is invalid or an invalid option is\n"
 "    given."
 msgstr ""
 "Đợi công việc chạy xong, sau đó trả lại trạng thái thoát.\n"
@@ -4535,8 +4405,7 @@ msgid ""
 "    and the return code is zero.  PID must be a process ID.\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
+"    Returns the status of ID; fails if ID is invalid or an invalid option is\n"
 "    given."
 msgstr ""
 "Đợi tiến trình chạy xong, sau đó thông báo trạng thái thoát của nó.\n"
@@ -4699,17 +4568,12 @@ msgstr ""
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
-"    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"
+"    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"
+"    `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.\n"
 "    \n"
 "    Exit Status:\n"
@@ -4798,8 +4662,7 @@ msgid ""
 "Define shell function.\n"
 "    \n"
 "    Create a shell function named NAME.  When invoked as a simple command,\n"
-"    NAME runs COMMANDs in the calling shell's context.  When NAME is "
-"invoked,\n"
+"    NAME runs COMMANDs in the calling shell's context.  When NAME is invoked,\n"
 "    the arguments are passed to the function as $1...$n, and the function's\n"
 "    name is in $FUNCNAME.\n"
 "    \n"
@@ -4883,12 +4746,9 @@ msgstr ""
 msgid ""
 "Execute conditional command.\n"
 "    \n"
-"    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"
+"    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"
 "      ( EXPRESSION )\tReturns the value of EXPRESSION\n"
 "      ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -4920,8 +4780,7 @@ msgstr ""
 "    \tB_THỨC1 || B_THỨC2\n"
 "\tĐúng nếu một của B_THỨC1 và B_THỨC2 là đúng; không thì sai\n"
 "    \n"
-"Khi dùng toán từ « == » và « != », chuỗi bên phải toán tử được dùng làm "
-"mẫu,\n"
+"Khi dùng toán từ « == » và « != », chuỗi bên phải toán tử được dùng làm mẫu,\n"
 "\tvà thực hiện chức năng khớp mẫu.\n"
 "Toán tử « && » và « || » không tính B_THỨC2 nếu B_THỨC1 là đủ\n"
 "\tđể tính giá trị của biểu thức.\n"
@@ -4991,8 +4850,7 @@ msgstr ""
 "\tmà diễn tả các tên tập tin cần bỏ qua khi mở rộng tên đường dẫn.\n"
 "    HISTFILE\tTên của tập tin chứa lịch sử câu lệnh của bạn.\n"
 "    HISTFILESIZE\tSố tối đa các dòng có thể được tập tin này chứa.\n"
-"    HISTSIZE\tSố tối đa các dòng lịch sử mà trình bao đang chạy có thể truy "
-"cập.\n"
+"    HISTSIZE\tSố tối đa các dòng lịch sử mà trình bao đang chạy có thể truy cập.\n"
 "    HOME\tTên đường dẫn đầy đủ đến thư mục đăng nhập của bạn.\n"
 "    HOSTNAME\tTên của máy chủ hiện thời của bạn.\n"
 "    HOSTTYPE\tKiểu CPU dưới đó phiên bản Bash này đang chạy.\n"
@@ -5019,8 +4877,7 @@ msgstr ""
 "    TERM\tTên của kiểu thiết bị cuối hiện thời.\n"
 "    TIMEFORMAT\tĐịnh dạng kết xuất cho thống kê đếm thời gian\n"
 "\tđược hiển thị bởi từ dành riêng « time ».\n"
-"    auto_resume\tCó giá trị thì trước tiên tìm một từ lệnh xuất hiện một "
-"mình\n"
+"    auto_resume\tCó giá trị thì trước tiên tìm một từ lệnh xuất hiện một mình\n"
 "\ttrên một dòng, trong danh sách các công việc bị dừng chạy.\n"
 "\tTìm được thì đặt công việc đó vào trước.\n"
 "\tGiá trị « exact » (chính xác) có nghĩa là từ lệnh phải tương ứng\n"
@@ -5159,12 +5016,10 @@ msgid ""
 "    \twith its position in the stack\n"
 "    \n"
 "    Arguments:\n"
-"      +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\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"
+"      -N\tDisplays the Nth entry counting from the right of the list shown by\n"
 "    \tdirs when invoked without options, starting with zero.\n"
 "    \n"
 "    Exit Status:\n"
@@ -5203,8 +5058,7 @@ msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
+"    arguments, list all shell options with an indication of whether or not each\n"
 "    is set.\n"
 "    \n"
 "    Options:\n"
@@ -5243,25 +5097,20 @@ msgid ""
 "      -v var\tassign the output to shell variable VAR rather than\n"
 "    \t\tdisplay it on the standard output\n"
 "    \n"
-"    FORMAT is a character string which contains three types of objects: "
-"plain\n"
-"    characters, which are simply copied to standard output; character "
-"escape\n"
+"    FORMAT 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"
+"    format specifications, each of which causes printing of the next successive\n"
 "    argument.\n"
 "    \n"
-"    In addition to the standard format specifications described in printf"
-"(1)\n"
+"    In addition to the standard format specifications described in printf(1)\n"
 "    and printf(3), printf interprets:\n"
 "    \n"
 "      %b\texpand backslash escape sequences in the corresponding argument\n"
 "      %q\tquote the argument in a way that can be reused as shell input\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success unless an invalid option is given or a write or "
-"assignment\n"
+"    Returns success unless an invalid option is given or a write or assignment\n"
 "    error occurs."
 msgstr ""
 "Định dạng và in ra các ĐỐI_SỐ tùy theo ĐỊNH_DẠNG.\n"
@@ -5283,18 +5132,14 @@ msgstr ""
 "\t\t\tlàm dữ liệu nhập vào trình bao\n"
 "\n"
 "\tTrạng thái thoát:\n"
-"\tTrả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi kiểu ghi hay "
-"gán."
+"\tTrả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi kiểu ghi hay gán."
 
 #: builtins.c:1895
-#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
-"    For each NAME, specify how arguments are to be completed.  If no "
-"options\n"
-"    are supplied, existing completion specifications are printed in a way "
-"that\n"
+"    For each NAME, specify how arguments are to be completed.  If no options\n"
+"    are supplied, existing completion specifications are printed in a way that\n"
 "    allows them to be reused as input.\n"
 "    \n"
 "    Options:\n"
@@ -5324,6 +5169,10 @@ msgstr ""
 "\t\t\tcó thể dùng lại được\n"
 "\t\t-r\tgỡ bỏ một đặc tả điền nốt cho mỗi TÊN,\n"
 "\t\t\thoặc nếu không đưa ra TÊN thì gỡ bỏ tất cả các đặc tả điền nốt\n"
+"      -D\táp dụng các sự hoàn thành và hành động làm mặc định\n"
+"\t\tcho câu lệnh mà không xác định sự hoàn thành riêng\n"
+"      -E\táp dụng các sự hoàn thành và hành động cho câu lệnh « trống »\n"
+"\t\t(empty) -- thử hoàn thành trên dòng trắng\n"
 "\n"
 "\tKhi chức năng điền nốt được thử, những hành động được làm\n"
 "\t\ttheo thứ tự của những tùy chọn chữ hoa bên trên.\n"
@@ -5336,8 +5185,7 @@ msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
 "    Intended to be used from within a shell function generating possible\n"
-"    completions.  If the optional WORD argument is supplied, matches "
-"against\n"
+"    completions.  If the optional WORD argument is supplied, matches against\n"
 "    WORD are generated.\n"
 "    \n"
 "    Exit Status:\n"
@@ -5354,16 +5202,12 @@ msgstr ""
 "\tTrả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi."
 
 #: builtins.c:1938
-#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
-"    Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-"    the completion currently begin executed.  If no OPTIONs are givenm, "
-"print\n"
-"    the completion options for each NAME or the current completion "
-"specification.\n"
+"    Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
+"    the completion currently begin executed.  If no OPTIONs are givenm, print\n"
+"    the completion options for each NAME or the current completion specification.\n"
 "    \n"
 "    Options:\n"
 "    \t-o option\tSet completion option OPTION for each NAME\n"
@@ -5393,6 +5237,8 @@ msgstr ""
 "\n"
 "\tTùy chọn\"\n"
 "\t\t-o tùy_chọn\tđặt tùy chọn điền nốt này đối với mỗi TÊN\n"
+"   \t-D\t\tSửa đổi các tuỳ chọn về sự điền nốt câu lệnh « mặc định » (default)\n"
+"    \t-E\t\tSửa đổi các tuỳ chọn về sự điền nốt câu lệnh « trống » (empty)\n"
 "\n"
 "\tDùng « +o » thay cho « -o » thì tắt tùy chọn đưa ra.\n"
 "\n"
@@ -5409,28 +5255,21 @@ msgstr ""
 "\tvà TÊN có một đặc tả điền nốt được xác định."
 
 #: builtins.c:1968
-#, fuzzy
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
-"    Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-"    from file descriptor FD if the -u option is supplied.  The variable "
-"MAPFILE\n"
+"    Read lines from the standard input into the indexed array variable ARRAY, or\n"
+"    from file descriptor FD if the -u option is supplied.  The variable MAPFILE\n"
 "    is the default ARRAY.\n"
 "    \n"
 "    Options:\n"
-"      -n count\tCopy at most COUNT lines.  If COUNT is 0, all lines are "
-"copied.\n"
-"      -O origin\tBegin assigning to ARRAY at index ORIGIN.  The default "
-"index is 0.\n"
+"      -n count\tCopy at most COUNT lines.  If COUNT is 0, all lines are copied.\n"
+"      -O origin\tBegin assigning to ARRAY at index ORIGIN.  The default index is 0.\n"
 "      -s count \tDiscard the first COUNT lines read.\n"
 "      -t\t\tRemove a trailing newline from each line read.\n"
-"      -u fd\t\tRead lines from file descriptor FD instead of the standard "
-"input.\n"
+"      -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n"
 "      -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n"
-"      -c quantum\tSpecify the number of lines read between each call to "
-"CALLBACK.\n"
+"      -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n"
 "    \n"
 "    Arguments:\n"
 "      ARRAY\t\tArray variable name to use for file data.\n"
@@ -5439,16 +5278,14 @@ msgid ""
 "    CALLBACK is evaluated, it is supplied the index of the next array\n"
 "    element to be assigned as an additional argument.\n"
 "    \n"
-"    If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
+"    If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
 "    assigning to it.\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
+"    Returns success unless an invalid option is given or ARRAY is readonly or\n"
 "    not an indexed array."
 msgstr ""
-"Đọc các dòng từ đầu vào tiêu chuẩn vào một biến mảng.\n"
+"Đọc các dòng từ đầu vào tiêu chuẩn vào một biến mảng phụ lục.\n"
 "\n"
 "\tĐọc các dòng từ đầu vào tiêu chuẩn vào biến mảng MẢNG,\n"
 "\thoặc từ bộ mô tả tập tin FD nếu đưa ra tùy chọn « -u ».\n"
@@ -5459,8 +5296,7 @@ msgstr ""
 "\t\t-O GỐC\tbắt đầu gán cho MẢNG ở chỉ mục GỐC. Chỉ mục mặc định là 0.\n"
 "\t\t-s SỐ\thủy SỐ dòng đầu tiên được đọc.\n"
 "\t\t-t\tgỡ bỏ một ký tự dòng mới theo sau khỏi mỗi dòng được đọc.\n"
-"\t\t-u FD\tđọc các dòng từ bộ mô tả tập tin FD thay vào từ đầu vào tiêu "
-"chuẩn.\n"
+"\t\t-u FD\tđọc các dòng từ bộ mô tả tập tin FD thay vào từ đầu vào tiêu chuẩn.\n"
 "\t\t-C GỌI_NGƯỢC\tđịnh giá GỌI_NGƯỢC mỗi lần đọc LƯỢNG dòng.\n"
 "\t\t-c LƯỢNG\tghi rõ số các dòng được đọc giữa hai lần gọi GỌI_NGƯỢC.\n"
 "\n"
@@ -5475,8 +5311,7 @@ msgstr ""
 "\t\tsẽ xoá sạch MẢNG trước khi gán cho nó.\n"
 "\n"
 "\tTráng thái thoát:\n"
-"\tTrả lại thành công nếu không đưa ra tùy chọn sai và MẢNG không phải chỉ "
-"đọc."
+"\tTrả lại thành công nếu không đưa ra tùy chọn sai và MẢNG không phải chỉ đọc."
 
 #: builtins.c:2001
 msgid ""
@@ -5487,13 +5322,3 @@ msgstr ""
 "Đọc các dòng từ một tập tin vào một biến mảng.\n"
 "\n"
 "\tĐồng nghĩa với « mapfile »."
-
-#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr "xrealloc: không thể cấp phát lại %lu byte (%lu byte đã cấp phát)"
-
-#~ msgid "xrealloc: cannot allocate %lu bytes"
-#~ msgstr "xrealloc: không thể cấp phát %lu byte"
-
-#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr ""
-#~ "xrealloc: %s:%d: không thể cấp phát lại %lu byte (%lu byte đã cấp phát)"
index 0fca5fb8b80d20edfe20e37d017c54ca45ad108a..b634f555043c65d149d61410a1ae6753a731c69d 100644 (file)
@@ -3807,6 +3807,11 @@ push_func_var (data)
 
   if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate)))
     {
+      /* Make sure we have a hash table to store the variable in while it is
+        being propagated down to the global variables table.  Create one if
+        we have to */
+      if ((vc_isfuncenv (shell_variables) || vc_istempenv (shell_variables)) && shell_variables->table == 0)
+       shell_variables->table = hash_create (0);
       /* XXX - should we set v->context here? */
       v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
       if (shell_variables == global_variables)