commit
ec250b623e
@ -1,11 +0,0 @@
|
||||
--- bash-2.02-orig/parse.y Wed Mar 25 18:16:23 1998
|
||||
+++ bash-2.02/parse.y Sun Apr 19 16:46:34 1998
|
||||
@@ -923,7 +923,7 @@
|
||||
|
||||
#if defined (READLINE)
|
||||
char *current_readline_prompt = (char *)NULL;
|
||||
-char *current_readline_line = (char *)NULL;
|
||||
+unsigned char *current_readline_line = (unsigned char *)NULL;
|
||||
int current_readline_line_index = 0;
|
||||
|
||||
static int
|
||||
@ -1,11 +0,0 @@
|
||||
--- bash-3.0/config-top.h.paths 2003-08-05 15:36:12.000000000 +0100
|
||||
+++ bash-3.0/config-top.h 2004-07-28 09:36:27.117205637 +0100
|
||||
@@ -66,7 +66,7 @@
|
||||
the Posix.2 confstr () function, or CS_PATH define are not present. */
|
||||
#ifndef STANDARD_UTILS_PATH
|
||||
#define STANDARD_UTILS_PATH \
|
||||
- "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc"
|
||||
+ "/bin:/usr/bin:/usr/sbin:/sbin"
|
||||
#endif
|
||||
|
||||
/* Default primary and secondary prompt strings. */
|
||||
@ -1,12 +0,0 @@
|
||||
diff -up bash-3.2/config-top.h.profile bash-3.2/config-top.h
|
||||
--- bash-3.2/config-top.h.profile 2008-07-17 13:35:39.000000000 +0200
|
||||
+++ bash-3.2/config-top.h 2008-07-17 13:42:18.000000000 +0200
|
||||
@@ -26,6 +26,8 @@
|
||||
what POSIX.2 specifies. */
|
||||
#define CONTINUE_AFTER_KILL_ERROR
|
||||
|
||||
+#define NON_INTERACTIVE_LOGIN_SHELLS
|
||||
+
|
||||
/* Define BREAK_COMPLAINS if you want the non-standard, but useful
|
||||
error messages about `break' and `continue' out of context. */
|
||||
#define BREAK_COMPLAINS
|
||||
@ -1,224 +0,0 @@
|
||||
diff --git a/config.h.in b/config.h.in
|
||||
index a5ad9e7..62a6b32 100644
|
||||
--- a/config.h.in
|
||||
+++ b/config.h.in
|
||||
@@ -748,6 +748,9 @@
|
||||
/* Define if you have the pselect function. */
|
||||
#undef HAVE_PSELECT
|
||||
|
||||
+/* Define if you have the pread function. */
|
||||
+#undef HAVE_PREAD
|
||||
+
|
||||
/* Define if you have the putenv function. */
|
||||
#undef HAVE_PUTENV
|
||||
|
||||
@@ -946,6 +949,9 @@
|
||||
/* Define if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
+/* Define if you have the <elf.h> header file. */
|
||||
+#undef HAVE_ELF_H
|
||||
+
|
||||
/* Define if you have the <grp.h> header file. */
|
||||
#undef HAVE_GRP_H
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index ce4e9b6..eda95d6 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -700,7 +700,7 @@ BASH_HEADER_INTTYPES
|
||||
AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
|
||||
memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
|
||||
stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
|
||||
- regex.h syslog.h ulimit.h)
|
||||
+ regex.h syslog.h ulimit.h elf.h)
|
||||
AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
|
||||
sys/param.h sys/socket.h sys/stat.h \
|
||||
sys/time.h sys/times.h sys/types.h sys/wait.h)
|
||||
@@ -771,7 +771,7 @@ dnl checks for system calls
|
||||
AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
|
||||
getpagesize getpeername getrlimit getrusage gettimeofday \
|
||||
kill killpg lstat pselect readlink sbrk select setdtablesize \
|
||||
- setitimer tcgetpgrp uname ulimit waitpid)
|
||||
+ setitimer tcgetpgrp uname ulimit waitpid pread)
|
||||
AC_REPLACE_FUNCS(rename)
|
||||
|
||||
dnl checks for c library functions
|
||||
diff --git a/execute_cmd.c b/execute_cmd.c
|
||||
index 2a3df6d..b5cd405 100644
|
||||
--- a/execute_cmd.c
|
||||
+++ b/execute_cmd.c
|
||||
@@ -41,6 +41,10 @@
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
+#ifdef HAVE_ELF_H
|
||||
+# include <elf.h>
|
||||
+#endif
|
||||
+
|
||||
#include "posixtime.h"
|
||||
|
||||
#if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE)
|
||||
@@ -5486,6 +5490,14 @@ shell_execve (command, args, env)
|
||||
{
|
||||
/* The file has the execute bits set, but the kernel refuses to
|
||||
run it for some reason. See why. */
|
||||
+#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
|
||||
+ int fd = open (command, O_RDONLY);
|
||||
+
|
||||
+ if (fd >= 0)
|
||||
+ sample_len = read (fd, sample, sizeof (sample));
|
||||
+ else
|
||||
+ sample_len = -1;
|
||||
+#endif
|
||||
#if defined (HAVE_HASH_BANG_EXEC)
|
||||
READ_SAMPLE_BUF (command, sample, sample_len);
|
||||
if (sample_len > 0)
|
||||
@@ -5495,6 +5507,7 @@ shell_execve (command, args, env)
|
||||
char *interp;
|
||||
int ilen;
|
||||
|
||||
+ close (fd);
|
||||
interp = getinterp (sample, sample_len, (int *)NULL);
|
||||
ilen = strlen (interp);
|
||||
errno = i;
|
||||
@@ -5510,6 +5523,136 @@ shell_execve (command, args, env)
|
||||
return (EX_NOEXEC);
|
||||
}
|
||||
#endif
|
||||
+#if defined (HAVE_ELF_H)
|
||||
+ if (i == ENOENT
|
||||
+ && sample_len > EI_NIDENT
|
||||
+ && memcmp (sample, ELFMAG, SELFMAG) == 0)
|
||||
+ {
|
||||
+ off_t offset = -1;
|
||||
+
|
||||
+ /* It is an ELF file. Now determine whether it is dynamically
|
||||
+ linked and if yes, get the offset of the interpreter
|
||||
+ string. */
|
||||
+ if (sample[EI_CLASS] == ELFCLASS32
|
||||
+ && sample_len > sizeof (Elf32_Ehdr))
|
||||
+ {
|
||||
+ Elf32_Ehdr ehdr;
|
||||
+ Elf32_Phdr *phdr;
|
||||
+ int nphdr;
|
||||
+
|
||||
+ /* We have to copy the data since the sample buffer
|
||||
+ might not be aligned correctly to be accessed as
|
||||
+ an Elf32_Ehdr struct. */
|
||||
+ memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
|
||||
+
|
||||
+ nphdr = ehdr.e_phnum;
|
||||
+ phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
||||
+ if (phdr != NULL)
|
||||
+ {
|
||||
+#ifdef HAVE_PREAD
|
||||
+ sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
|
||||
+ ehdr.e_phoff);
|
||||
+#else
|
||||
+ if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
|
||||
+ sample_len = read (fd, phdr,
|
||||
+ nphdr * ehdr.e_phentsize);
|
||||
+ else
|
||||
+ sample_len = -1;
|
||||
+#endif
|
||||
+ if (sample_len == nphdr * ehdr.e_phentsize)
|
||||
+ while (nphdr-- > 0)
|
||||
+ if (phdr[nphdr].p_type == PT_INTERP)
|
||||
+ {
|
||||
+ offset = phdr[nphdr].p_offset;
|
||||
+ break;
|
||||
+ }
|
||||
+ free (phdr);
|
||||
+ }
|
||||
+ }
|
||||
+ else if (sample[EI_CLASS] == ELFCLASS64
|
||||
+ && sample_len > sizeof (Elf64_Ehdr))
|
||||
+ {
|
||||
+ Elf64_Ehdr ehdr;
|
||||
+ Elf64_Phdr *phdr;
|
||||
+ int nphdr;
|
||||
+
|
||||
+ /* We have to copy the data since the sample buffer
|
||||
+ might not be aligned correctly to be accessed as
|
||||
+ an Elf64_Ehdr struct. */
|
||||
+ memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
|
||||
+
|
||||
+ nphdr = ehdr.e_phnum;
|
||||
+ phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
||||
+ if (phdr != NULL)
|
||||
+ {
|
||||
+#ifdef HAVE_PREAD
|
||||
+ sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
|
||||
+ ehdr.e_phoff);
|
||||
+#else
|
||||
+ if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
|
||||
+ sample_len = read (fd, phdr,
|
||||
+ nphdr * ehdr.e_phentsize);
|
||||
+ else
|
||||
+ sample_len = -1;
|
||||
+#endif
|
||||
+ if (sample_len == nphdr * ehdr.e_phentsize)
|
||||
+ while (nphdr-- > 0)
|
||||
+ if (phdr[nphdr].p_type == PT_INTERP)
|
||||
+ {
|
||||
+ offset = phdr[nphdr].p_offset;
|
||||
+ break;
|
||||
+ }
|
||||
+ free (phdr);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (offset != -1)
|
||||
+ {
|
||||
+ size_t maxlen = 0;
|
||||
+ size_t actlen = 0;
|
||||
+ char *interp = NULL;
|
||||
+
|
||||
+ do
|
||||
+ {
|
||||
+ if (actlen == maxlen)
|
||||
+ {
|
||||
+ char *newinterp = realloc (interp, maxlen += 200);
|
||||
+ if (newinterp == NULL)
|
||||
+ {
|
||||
+ actlen = 0;
|
||||
+ break;
|
||||
+ }
|
||||
+ interp = newinterp;
|
||||
+
|
||||
+#ifdef HAVE_PREAD
|
||||
+ actlen = pread (fd, interp, maxlen, offset);
|
||||
+#else
|
||||
+ if (lseek (fd, offset, SEEK_SET) != -1)
|
||||
+ actlen = read (fd, interp, maxlen);
|
||||
+ else
|
||||
+ actlen = -1;
|
||||
+#endif
|
||||
+ }
|
||||
+ }
|
||||
+ while (actlen > 0 && memchr (interp, '\0', actlen) == NULL);
|
||||
+
|
||||
+ if (actlen > 0)
|
||||
+ {
|
||||
+ close (fd);
|
||||
+ errno = i;
|
||||
+ sys_error ("%s: %s: bad ELF interpreter", command,
|
||||
+ interp);
|
||||
+ free (interp);
|
||||
+ return (EX_NOEXEC);
|
||||
+ }
|
||||
+
|
||||
+ free (interp);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
|
||||
+ close (fd);
|
||||
+#endif
|
||||
errno = i;
|
||||
file_error (command);
|
||||
}
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@ -1,10 +0,0 @@
|
||||
--- bash-2.05b/builtins/Makefile.in.debuginfo 2003-03-25 17:25:21.000000000 +0000
|
||||
+++ bash-2.05b/builtins/Makefile.in 2003-03-25 17:25:49.000000000 +0000
|
||||
@@ -93,7 +93,6 @@
|
||||
$(RM) $@
|
||||
./$(MKBUILTINS) $(DIRECTDEFINE) $<
|
||||
$(CC) -c $(CCFLAGS) $*.c || ( $(RM) $*.c ; exit 1 )
|
||||
- $(RM) $*.c
|
||||
|
||||
# How to make a .c file from a .def file.
|
||||
.def.c:
|
||||
@ -1,10 +0,0 @@
|
||||
--- bash-2.05b/doc/builtins.1.manso 2003-02-10 18:58:21.000000000 +0000
|
||||
+++ bash-2.05b/doc/builtins.1 2003-02-10 18:58:28.000000000 +0000
|
||||
@@ -10,6 +10,6 @@
|
||||
ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1)
|
||||
.SH BASH BUILTIN COMMANDS
|
||||
.nr zZ 1
|
||||
-.so bash.1
|
||||
+.so man1/bash.1
|
||||
.SH SEE ALSO
|
||||
bash(1), sh(1)
|
||||
@ -1,96 +0,0 @@
|
||||
diff -up bash-4.2/config.h.in.audit bash-4.2/config.h.in
|
||||
--- bash-4.2/config.h.in.audit 2013-01-31 16:26:16.857698992 +0100
|
||||
+++ bash-4.2/config.h.in 2013-01-31 16:26:16.876699255 +0100
|
||||
@@ -1131,6 +1131,14 @@
|
||||
|
||||
/* End additions for lib/intl */
|
||||
|
||||
+
|
||||
+/* Additions for lib/readline */
|
||||
+
|
||||
+/* Define if you have <linux/audit.h> and it defines AUDIT_USER_TTY */
|
||||
+#undef HAVE_DECL_AUDIT_USER_TTY
|
||||
+
|
||||
+/* End additions for lib/readline */
|
||||
+
|
||||
#include "config-bot.h"
|
||||
|
||||
#endif /* _CONFIG_H_ */
|
||||
diff -up bash-4.2/configure.in.audit bash-4.2/configure.in
|
||||
--- bash-4.2/configure.in.audit 2013-01-31 16:26:16.858699005 +0100
|
||||
+++ bash-4.2/configure.ac 2013-01-31 16:26:16.877699269 +0100
|
||||
@@ -888,6 +888,8 @@ BASH_FUNC_DUP2_CLOEXEC_CHECK
|
||||
BASH_SYS_PGRP_SYNC
|
||||
BASH_SYS_SIGNAL_VINTAGE
|
||||
|
||||
+AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
|
||||
+
|
||||
dnl checking for the presence of certain library symbols
|
||||
BASH_SYS_ERRLIST
|
||||
BASH_SYS_SIGLIST
|
||||
diff -up bash-4.2/lib/readline/readline.c.audit bash-4.2/lib/readline/readline.c
|
||||
--- bash-4.2/lib/readline/readline.c.audit 2013-01-31 16:26:16.871699185 +0100
|
||||
+++ bash-4.2/lib/readline/readline.c 2013-01-31 17:24:23.902744860 +0100
|
||||
@@ -55,6 +55,12 @@
|
||||
extern int errno;
|
||||
#endif /* !errno */
|
||||
|
||||
+#if defined (HAVE_DECL_AUDIT_USER_TTY)
|
||||
+# include <sys/socket.h>
|
||||
+# include <linux/audit.h>
|
||||
+# include <linux/netlink.h>
|
||||
+#endif
|
||||
+
|
||||
/* System-specific feature definitions and include files. */
|
||||
#include "rldefs.h"
|
||||
#include "rlmbutil.h"
|
||||
@@ -301,7 +307,48 @@ rl_set_prompt (prompt)
|
||||
rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
|
||||
return 0;
|
||||
}
|
||||
-
|
||||
+
|
||||
+#if defined (HAVE_DECL_AUDIT_USER_TTY)
|
||||
+/* Report STRING to the audit system. */
|
||||
+static void
|
||||
+audit_tty (char *string)
|
||||
+{
|
||||
+ struct sockaddr_nl addr;
|
||||
+ struct msghdr msg;
|
||||
+ struct nlmsghdr nlm;
|
||||
+ struct iovec iov[2];
|
||||
+ size_t size;
|
||||
+ int fd;
|
||||
+
|
||||
+ size = strlen (string) + 1;
|
||||
+ fd = socket (AF_NETLINK, SOCK_RAW, NETLINK_AUDIT);
|
||||
+ if (fd < 0)
|
||||
+ return;
|
||||
+ nlm.nlmsg_len = NLMSG_LENGTH (size);
|
||||
+ nlm.nlmsg_type = AUDIT_USER_TTY;
|
||||
+ nlm.nlmsg_flags = NLM_F_REQUEST;
|
||||
+ nlm.nlmsg_seq = 0;
|
||||
+ nlm.nlmsg_pid = 0;
|
||||
+ iov[0].iov_base = &nlm;
|
||||
+ iov[0].iov_len = sizeof (nlm);
|
||||
+ iov[1].iov_base = string;
|
||||
+ iov[1].iov_len = size;
|
||||
+ addr.nl_family = AF_NETLINK;
|
||||
+ addr.nl_pad = 0;
|
||||
+ addr.nl_pid = 0;
|
||||
+ addr.nl_groups = 0;
|
||||
+ msg.msg_name = &addr;
|
||||
+ msg.msg_namelen = sizeof (addr);
|
||||
+ msg.msg_iov = iov;
|
||||
+ msg.msg_iovlen = 2;
|
||||
+ msg.msg_control = NULL;
|
||||
+ msg.msg_controllen = 0;
|
||||
+ msg.msg_flags = 0;
|
||||
+ (void)sendmsg (fd, &msg, 0);
|
||||
+ close (fd);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
/* Read a line of input. Prompt with PROMPT. An empty PROMPT means
|
||||
none. A return value of NULL means that EOF was encountered. */
|
||||
char *
|
||||
@ -1,12 +0,0 @@
|
||||
diff -up bash-4.0/config-top.h.ssh_source_bash bash-4.0/config-top.h
|
||||
--- bash-4.0/config-top.h.ssh_source_bash 2009-01-21 15:20:06.000000000 +0100
|
||||
+++ bash-4.0/config-top.h 2009-01-21 15:25:46.000000000 +0100
|
||||
@@ -90,7 +90,7 @@
|
||||
sshd and source the .bashrc if so (like the rshd behavior). This checks
|
||||
for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment,
|
||||
which can be fooled under certain not-uncommon circumstances. */
|
||||
-/* #define SSH_SOURCE_BASHRC */
|
||||
+#define SSH_SOURCE_BASHRC
|
||||
|
||||
/* Define if you want the case-capitalizing operators (~[~]) and the
|
||||
`capcase' variable attribute (declare -c). */
|
||||
@ -1,12 +0,0 @@
|
||||
diff -up bash-4.1/config-top.h.broken_pipe bash-4.1/config-top.h
|
||||
--- bash-4.1/config-top.h.broken_pipe 2011-01-06 18:01:30.000000000 +0100
|
||||
+++ bash-4.1/config-top.h 2011-01-06 18:02:14.000000000 +0100
|
||||
@@ -51,7 +51,7 @@
|
||||
/* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins
|
||||
like `echo' and `printf' to report errors when output does not succeed
|
||||
due to EPIPE. */
|
||||
-/* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */
|
||||
+#define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS
|
||||
|
||||
/* The default value of the PATH variable. */
|
||||
#ifndef DEFAULT_PATH_VALUE
|
||||
@ -1,24 +0,0 @@
|
||||
diff -up bash-4.1/examples/loadables/Makefile.in.examples bash-4.1/examples/loadables/Makefile.in
|
||||
--- bash-4.1/examples/loadables/Makefile.in.examples 2010-06-22 16:20:02.000000000 +0200
|
||||
+++ bash-4.1/examples/loadables/Makefile.in 2010-06-22 16:20:41.000000000 +0200
|
||||
@@ -43,7 +43,7 @@ host_os = @host_os@
|
||||
host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
|
||||
-CFLAGS = @CFLAGS@
|
||||
+CFLAGS = -O2 -g
|
||||
LOCAL_CFLAGS = @LOCAL_CFLAGS@
|
||||
DEFS = @DEFS@
|
||||
LOCAL_DEFS = @LOCAL_DEFS@
|
||||
diff -up bash-4.1/examples/loadables/perl/Makefile.in.examples bash-4.1/examples/loadables/perl/Makefile.in
|
||||
--- bash-4.1/examples/loadables/perl/Makefile.in.examples 2010-06-22 16:20:46.000000000 +0200
|
||||
+++ bash-4.1/examples/loadables/perl/Makefile.in 2010-06-22 16:21:04.000000000 +0200
|
||||
@@ -42,7 +42,7 @@ SHELL = @MAKE_SHELL@
|
||||
|
||||
PERL5 = perl5
|
||||
|
||||
-CFLAGS = @CFLAGS@
|
||||
+CFLAGS = -O2 -g
|
||||
|
||||
#
|
||||
# These values are generated for configure by ${topdir}/support/shobj-conf.
|
||||
@ -1,12 +0,0 @@
|
||||
diff -up bash-4.1/doc/bash.1.manpage_trap bash-4.1/doc/bash.1
|
||||
--- bash-4.1/doc/bash.1.manpage_trap 2012-08-28 10:06:00.561999092 +0200
|
||||
+++ bash-4.1/doc/bash.1 2012-08-28 10:06:24.225304505 +0200
|
||||
@@ -9251,7 +9251,7 @@ being inverted via
|
||||
These are the same conditions obeyed by the \fBerrexit\fP (\fB\-e\fP) option.
|
||||
.if t .sp 0.5
|
||||
.if n .sp 1
|
||||
-Signals ignored upon entry to the shell cannot be trapped or reset.
|
||||
+Signals ignored upon entry to the shell cannot be trapped, reset or listed.
|
||||
Trapped signals that are not being ignored are reset to their original
|
||||
values in a subshell or subshell environment when one is created.
|
||||
The return status is false if any
|
||||
@ -1,41 +0,0 @@
|
||||
diff --git a/config-top.h b/config-top.h
|
||||
index 026d4a4..cb0e002 100644
|
||||
--- a/config-top.h
|
||||
+++ b/config-top.h
|
||||
@@ -92,7 +92,7 @@
|
||||
/* #define SYS_BASHRC "/etc/bash.bashrc" */
|
||||
|
||||
/* System-wide .bash_logout for login shells. */
|
||||
-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */
|
||||
+#define SYS_BASH_LOGOUT "/etc/bash.bash_logout"
|
||||
|
||||
/* Define this to make non-interactive shells begun with argv[0][0] == '-'
|
||||
run the startup files when not in posix mode. */
|
||||
diff --git a/doc/bash.1 b/doc/bash.1
|
||||
index 04ce845..bfde55e 100644
|
||||
--- a/doc/bash.1
|
||||
+++ b/doc/bash.1
|
||||
@@ -335,8 +335,8 @@ option may be used when the shell is started to inhibit this behavior.
|
||||
When an interactive login shell exits,
|
||||
or a non-interactive login shell executes the \fBexit\fP builtin command,
|
||||
.B bash
|
||||
-reads and executes commands from the file \fI~/.bash_logout\fP, if it
|
||||
-exists.
|
||||
+reads and executes commands from the files \fI~/.bash_logout\fP
|
||||
+and \fI/etc/bash.bash_logout\fP, if the files exists.
|
||||
.PP
|
||||
When an interactive shell that is not a login shell is started,
|
||||
.B bash
|
||||
@@ -10558,6 +10558,9 @@ The \fBbash\fP executable
|
||||
.FN /etc/profile
|
||||
The systemwide initialization file, executed for login shells
|
||||
.TP
|
||||
+.FN /etc/bash.bash_logout
|
||||
+The systemwide login shell cleanup file, executed when a login shell exits
|
||||
+.TP
|
||||
.FN ~/.bash_profile
|
||||
The personal initialization file, executed for login shells
|
||||
.TP
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@ -1,14 +0,0 @@
|
||||
diff -up bash-4.2/variables.h.size_type bash-4.2/variables.h
|
||||
--- bash-4.2/variables.h.size_type 2012-11-29 10:33:25.109036844 +0100
|
||||
+++ bash-4.2/variables.h 2012-11-29 10:46:12.718530162 +0100
|
||||
@@ -95,8 +95,8 @@ typedef struct variable {
|
||||
|
||||
typedef struct _vlist {
|
||||
SHELL_VAR **list;
|
||||
- int list_size; /* allocated size */
|
||||
- int list_len; /* current number of entries */
|
||||
+ size_t list_size; /* allocated size */
|
||||
+ size_t list_len; /* current number of entries */
|
||||
} VARLIST;
|
||||
|
||||
/* The various attributes that a given variable can have. */
|
||||
@ -1,15 +0,0 @@
|
||||
diff --git a/doc/bash.1 b/doc/bash.1
|
||||
index 6e8aebb..e846e68 100644
|
||||
--- a/doc/bash.1
|
||||
+++ b/doc/bash.1
|
||||
@@ -10333,6 +10333,7 @@ and
|
||||
which are in 512-byte increments.
|
||||
The return status is 0 unless an invalid option or argument is supplied,
|
||||
or an error occurs while setting a new limit.
|
||||
+In POSIX Mode 512-byte blocks are used for the `-c' and `-f' options.
|
||||
.RE
|
||||
.TP
|
||||
\fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP]
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@ -1,15 +0,0 @@
|
||||
diff --git a/Makefile.in b/Makefile.in
|
||||
index a1f9483..24c646a 100644
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -800,7 +800,6 @@ install: .made installdirs
|
||||
infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ )
|
||||
-( cd $(DEFDIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ )
|
||||
-( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ )
|
||||
- -( cd $(LOADABLES_DIR) && $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ )
|
||||
|
||||
install-strip:
|
||||
$(MAKE) $(MFLAGS) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@ -1,26 +0,0 @@
|
||||
diff --git a/doc/Makefile.in b/doc/Makefile.in
|
||||
index 5f0756c..a5fa5a0 100644
|
||||
--- a/doc/Makefile.in
|
||||
+++ b/doc/Makefile.in
|
||||
@@ -74,7 +74,6 @@ TEXI2DVI = ${SUPPORT_SRCDIR}/texi2dvi
|
||||
TEXI2HTML = ${SUPPORT_SRCDIR}/texi2html
|
||||
MAN2HTML = ${BUILD_DIR}/support/man2html
|
||||
HTMLPOST = ${srcdir}/htmlpost.sh
|
||||
-INFOPOST = ${srcdir}/infopost.sh
|
||||
QUIETPS = #set this to -q to shut up dvips
|
||||
PAPERSIZE = letter # change to a4 for A4-size paper
|
||||
PSDPI = 600 # could be 300 if you like
|
||||
@@ -188,8 +187,8 @@ bashref.pdf: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
|
||||
bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
|
||||
$(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi
|
||||
|
||||
-bash.info: bashref.info
|
||||
- ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \
|
||||
+bash.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
|
||||
+ $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi -o $@
|
||||
|
||||
bash.txt: bash.1
|
||||
bash.ps: bash.1
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@ -1,312 +0,0 @@
|
||||
diff --git a/builtins.h b/builtins.h
|
||||
index dac95fd..5b7e811 100644
|
||||
--- a/builtins.h
|
||||
+++ b/builtins.h
|
||||
@@ -45,6 +45,7 @@
|
||||
#define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */
|
||||
#define POSIX_BUILTIN 0x20 /* This builtins is special in the Posix command search order. */
|
||||
#define LOCALVAR_BUILTIN 0x40 /* This builtin creates local variables */
|
||||
+#define REQUIRES_BUILTIN 0x80 /* This builtin requires other files. */
|
||||
|
||||
#define BASE_INDENT 4
|
||||
|
||||
diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c
|
||||
index 4f51201..91c25db 100644
|
||||
--- a/builtins/mkbuiltins.c
|
||||
+++ b/builtins/mkbuiltins.c
|
||||
@@ -69,10 +69,15 @@ extern char *strcpy ();
|
||||
#define whitespace(c) (((c) == ' ') || ((c) == '\t'))
|
||||
|
||||
/* Flag values that builtins can have. */
|
||||
+/* These flags are for the C code generator,
|
||||
+ the C which is produced (./builtin.c)
|
||||
+ includes the flags definitions found
|
||||
+ in ../builtins.h */
|
||||
#define BUILTIN_FLAG_SPECIAL 0x01
|
||||
#define BUILTIN_FLAG_ASSIGNMENT 0x02
|
||||
#define BUILTIN_FLAG_LOCALVAR 0x04
|
||||
#define BUILTIN_FLAG_POSIX_BUILTIN 0x08
|
||||
+#define BUILTIN_FLAG_REQUIRES 0x10
|
||||
|
||||
#define BASE_INDENT 4
|
||||
|
||||
@@ -173,11 +178,19 @@ char *posix_builtins[] =
|
||||
(char *)NULL
|
||||
};
|
||||
|
||||
+/* The builtin commands that cause requirements on other files. */
|
||||
+static char *requires_builtins[] =
|
||||
+{
|
||||
+ ".", "command", "exec", "source", "inlib",
|
||||
+ (char *)NULL
|
||||
+};
|
||||
+
|
||||
/* Forward declarations. */
|
||||
static int is_special_builtin ();
|
||||
static int is_assignment_builtin ();
|
||||
static int is_localvar_builtin ();
|
||||
static int is_posix_builtin ();
|
||||
+static int is_requires_builtin ();
|
||||
|
||||
#if !defined (HAVE_RENAME)
|
||||
static int rename ();
|
||||
@@ -831,6 +844,8 @@ builtin_handler (self, defs, arg)
|
||||
new->flags |= BUILTIN_FLAG_LOCALVAR;
|
||||
if (is_posix_builtin (name))
|
||||
new->flags |= BUILTIN_FLAG_POSIX_BUILTIN;
|
||||
+ if (is_requires_builtin (name))
|
||||
+ new->flags |= BUILTIN_FLAG_REQUIRES;
|
||||
|
||||
array_add ((char *)new, defs->builtins);
|
||||
building_builtin = 1;
|
||||
@@ -1250,12 +1265,13 @@ write_builtins (defs, structfile, externfile)
|
||||
else
|
||||
fprintf (structfile, "(sh_builtin_func_t *)0x0, ");
|
||||
|
||||
- fprintf (structfile, "%s%s%s%s%s, %s_doc,\n",
|
||||
+ fprintf (structfile, "%s%s%s%s%s%s, %s_doc,\n",
|
||||
"BUILTIN_ENABLED | STATIC_BUILTIN",
|
||||
(builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "",
|
||||
(builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "",
|
||||
(builtin->flags & BUILTIN_FLAG_LOCALVAR) ? " | LOCALVAR_BUILTIN" : "",
|
||||
(builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "",
|
||||
+ (builtin->flags & BUILTIN_FLAG_REQUIRES) ? " | REQUIRES_BUILTIN" : "",
|
||||
document_name (builtin));
|
||||
|
||||
/* Don't translate short document summaries that are identical
|
||||
@@ -1645,6 +1661,13 @@ is_posix_builtin (name)
|
||||
return (_find_in_table (name, posix_builtins));
|
||||
}
|
||||
|
||||
+static int
|
||||
+is_requires_builtin (name)
|
||||
+ char *name;
|
||||
+{
|
||||
+ return (_find_in_table (name, requires_builtins));
|
||||
+}
|
||||
+
|
||||
#if !defined (HAVE_RENAME)
|
||||
static int
|
||||
rename (from, to)
|
||||
diff --git a/doc/bash.1 b/doc/bash.1
|
||||
index d91f1fd..111a66d 100644
|
||||
--- a/doc/bash.1
|
||||
+++ b/doc/bash.1
|
||||
@@ -239,6 +239,14 @@ The shell becomes restricted (see
|
||||
.B "RESTRICTED SHELL"
|
||||
below).
|
||||
.TP
|
||||
+.B \-\-rpm-requires
|
||||
+Produce the list of files that are required for the
|
||||
+shell script to run. This implies '-n' and is subject
|
||||
+to the same limitations as compile time error checking checking;
|
||||
+Command substitutions, Conditional expressions and
|
||||
+.BR eval
|
||||
+builtin are not parsed so some dependencies may be missed.
|
||||
+.TP
|
||||
.B \-\-verbose
|
||||
Equivalent to \fB\-v\fP.
|
||||
.TP
|
||||
diff --git a/doc/bashref.texi b/doc/bashref.texi
|
||||
index d33cd57..6fc4d18 100644
|
||||
--- a/doc/bashref.texi
|
||||
+++ b/doc/bashref.texi
|
||||
@@ -6453,6 +6453,13 @@ standard. @xref{Bash POSIX Mode}, for a description of the Bash
|
||||
@item --restricted
|
||||
Make the shell a restricted shell (@pxref{The Restricted Shell}).
|
||||
|
||||
+@item --rpm-requires
|
||||
+Produce the list of files that are required for the
|
||||
+shell script to run. This implies '-n' and is subject
|
||||
+to the same limitations as compile time error checking checking;
|
||||
+Command substitutions, Conditional expressions and @command{eval}
|
||||
+are not parsed so some dependencies may be missed.
|
||||
+
|
||||
@item --verbose
|
||||
Equivalent to @option{-v}. Print shell input lines as they're read.
|
||||
|
||||
diff --git a/eval.c b/eval.c
|
||||
index f02d6e4..76c1e8d 100644
|
||||
--- a/eval.c
|
||||
+++ b/eval.c
|
||||
@@ -142,7 +142,8 @@ reader_loop ()
|
||||
|
||||
if (read_command () == 0)
|
||||
{
|
||||
- if (interactive_shell == 0 && read_but_dont_execute)
|
||||
+
|
||||
+ if (interactive_shell == 0 && (read_but_dont_execute && !rpm_requires))
|
||||
{
|
||||
last_command_exit_value = EXECUTION_SUCCESS;
|
||||
dispose_command (global_command);
|
||||
diff --git a/execute_cmd.c b/execute_cmd.c
|
||||
index 8b3c83a..4eae19c 100644
|
||||
--- a/execute_cmd.c
|
||||
+++ b/execute_cmd.c
|
||||
@@ -542,6 +542,8 @@ async_redirect_stdin ()
|
||||
|
||||
#define DESCRIBE_PID(pid) do { if (interactive) describe_pid (pid); } while (0)
|
||||
|
||||
+extern int rpm_requires;
|
||||
+
|
||||
/* Execute the command passed in COMMAND, perhaps doing it asynchronously.
|
||||
COMMAND is exactly what read_command () places into GLOBAL_COMMAND.
|
||||
ASYNCHROUNOUS, if non-zero, says to do this command in the background.
|
||||
@@ -573,7 +575,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
|
||||
|
||||
if (breaking || continuing)
|
||||
return (last_command_exit_value);
|
||||
- if (command == 0 || read_but_dont_execute)
|
||||
+ if (command == 0 || (read_but_dont_execute && !rpm_requires))
|
||||
+ return (EXECUTION_SUCCESS);
|
||||
+ if (rpm_requires && command->type == cm_function_def)
|
||||
+ return last_command_exit_value =
|
||||
+ execute_intern_function (command->value.Function_def->name,
|
||||
+ command->value.Function_def);
|
||||
+ if (read_but_dont_execute)
|
||||
return (EXECUTION_SUCCESS);
|
||||
|
||||
QUIT;
|
||||
@@ -2819,7 +2827,7 @@ execute_for_command (for_command)
|
||||
save_line_number = line_number;
|
||||
if (check_identifier (for_command->name, 1) == 0)
|
||||
{
|
||||
- if (posixly_correct && interactive_shell == 0)
|
||||
+ if (posixly_correct && interactive_shell == 0 && rpm_requires == 0)
|
||||
{
|
||||
last_command_exit_value = EX_BADUSAGE;
|
||||
jump_to_top_level (ERREXIT);
|
||||
diff --git a/execute_cmd.h b/execute_cmd.h
|
||||
index dc2f15e..506fff4 100644
|
||||
--- a/execute_cmd.h
|
||||
+++ b/execute_cmd.h
|
||||
@@ -22,6 +22,9 @@
|
||||
#define _EXECUTE_CMD_H_
|
||||
|
||||
#include "stdc.h"
|
||||
+#include "variables.h"
|
||||
+#include "command.h"
|
||||
+
|
||||
|
||||
#if defined (ARRAY_VARS)
|
||||
struct func_array_state
|
||||
diff --git a/make_cmd.c b/make_cmd.c
|
||||
index ecbbfd6..3d8bfa4 100644
|
||||
--- a/make_cmd.c
|
||||
+++ b/make_cmd.c
|
||||
@@ -35,6 +35,8 @@
|
||||
#include "bashintl.h"
|
||||
|
||||
#include "shell.h"
|
||||
+#include "builtins.h"
|
||||
+#include "builtins/common.h"
|
||||
#include "execute_cmd.h"
|
||||
#include "parser.h"
|
||||
#include "flags.h"
|
||||
@@ -828,6 +830,30 @@ make_coproc_command (name, command)
|
||||
return (make_command (cm_coproc, (SIMPLE_COM *)temp));
|
||||
}
|
||||
|
||||
+static void
|
||||
+output_requirement (deptype, filename)
|
||||
+const char *deptype;
|
||||
+char *filename;
|
||||
+{
|
||||
+ static char *alphabet_set = "abcdefghijklmnopqrstuvwxyz"
|
||||
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
+
|
||||
+ if (strchr(filename, '$') || (filename[0] != '/' && strchr(filename, '/')))
|
||||
+ return;
|
||||
+
|
||||
+ /*
|
||||
+ if the executable is called via variable substitution we can
|
||||
+ not dermine what it is at compile time.
|
||||
+
|
||||
+ if the executable consists only of characters not in the
|
||||
+ alphabet we do not consider it a dependency just an artifact
|
||||
+ of shell parsing (ex "exec < ${infile}").
|
||||
+ */
|
||||
+
|
||||
+ if (strpbrk(filename, alphabet_set))
|
||||
+ printf ("%s(%s)\n", deptype, filename);
|
||||
+}
|
||||
+
|
||||
/* Reverse the word list and redirection list in the simple command
|
||||
has just been parsed. It seems simpler to do this here the one
|
||||
time then by any other method that I can think of. */
|
||||
@@ -845,6 +871,28 @@ clean_simple_command (command)
|
||||
REVERSE_LIST (command->value.Simple->redirects, REDIRECT *);
|
||||
}
|
||||
|
||||
+ if (rpm_requires && command->value.Simple->words)
|
||||
+ {
|
||||
+ char *cmd0;
|
||||
+ char *cmd1;
|
||||
+ struct builtin *b;
|
||||
+
|
||||
+ cmd0 = command->value.Simple->words->word->word;
|
||||
+ b = builtin_address_internal (cmd0, 0);
|
||||
+ cmd1 = 0;
|
||||
+ if (command->value.Simple->words->next)
|
||||
+ cmd1 = command->value.Simple->words->next->word->word;
|
||||
+
|
||||
+ if (b) {
|
||||
+ if ( (b->flags & REQUIRES_BUILTIN) && cmd1)
|
||||
+ output_requirement ("executable", cmd1);
|
||||
+ } else {
|
||||
+ if (!assignment(cmd0, 0))
|
||||
+ output_requirement (find_function(cmd0) ? "function" : "executable", cmd0);
|
||||
+ }
|
||||
+ } /*rpm_requires*/
|
||||
+
|
||||
+
|
||||
parser_state &= ~PST_REDIRLIST;
|
||||
return (command);
|
||||
}
|
||||
diff --git a/shell.c b/shell.c
|
||||
index a2b2a55..c5d99b3 100644
|
||||
--- a/shell.c
|
||||
+++ b/shell.c
|
||||
@@ -193,6 +193,9 @@ int have_devfd = 0;
|
||||
/* The name of the .(shell)rc file. */
|
||||
static char *bashrc_file = DEFAULT_BASHRC;
|
||||
|
||||
+/* Non-zero if we are finding the scripts requirements. */
|
||||
+int rpm_requires;
|
||||
+
|
||||
/* Non-zero means to act more like the Bourne shell on startup. */
|
||||
static int act_like_sh;
|
||||
|
||||
@@ -259,6 +262,7 @@ static const struct {
|
||||
{ "protected", Int, &protected_mode, (char **)0x0 },
|
||||
#endif
|
||||
{ "rcfile", Charp, (int *)0x0, &bashrc_file },
|
||||
+ { "rpm-requires", Int, &rpm_requires, (char **)0x0 },
|
||||
#if defined (RESTRICTED_SHELL)
|
||||
{ "restricted", Int, &restricted, (char **)0x0 },
|
||||
#endif
|
||||
@@ -496,6 +500,12 @@ main (argc, argv, env)
|
||||
if (dump_translatable_strings)
|
||||
read_but_dont_execute = 1;
|
||||
|
||||
+ if (rpm_requires)
|
||||
+ {
|
||||
+ read_but_dont_execute = 1;
|
||||
+ initialize_shell_builtins ();
|
||||
+ }
|
||||
+
|
||||
if (running_setuid && privileged_mode == 0)
|
||||
disable_priv_mode ();
|
||||
|
||||
diff --git a/shell.h b/shell.h
|
||||
index 8072605..6c4149d 100644
|
||||
--- a/shell.h
|
||||
+++ b/shell.h
|
||||
@@ -99,6 +99,7 @@ extern int interactive, interactive_shell;
|
||||
extern int startup_state;
|
||||
extern int reading_shell_script;
|
||||
extern int shell_initialized;
|
||||
+extern int rpm_requires;
|
||||
extern int bash_argv_initialized;
|
||||
extern int subshell_environment;
|
||||
extern int current_command_number;
|
||||
@ -1,10 +0,0 @@
|
||||
--- bash-3.0/builtins/setattr.def.setlocale 2005-08-08 12:22:42.000000000 +0100
|
||||
+++ bash-3.0/builtins/setattr.def 2005-08-08 12:25:16.000000000 +0100
|
||||
@@ -423,4 +423,7 @@
|
||||
|
||||
if (var && (exported_p (var) || (attribute & att_exported)))
|
||||
array_needs_making++; /* XXX */
|
||||
+
|
||||
+ if (var)
|
||||
+ stupidly_hack_special_variables (name);
|
||||
}
|
||||
@ -1,60 +0,0 @@
|
||||
diff --git a/tests/exec.right b/tests/exec.right
|
||||
index 6075cc8..0b3f02c 100644
|
||||
--- a/tests/exec.right
|
||||
+++ b/tests/exec.right
|
||||
@@ -51,7 +51,6 @@ this is ohio-state
|
||||
0
|
||||
1
|
||||
testb
|
||||
-expand_aliases on
|
||||
1
|
||||
1
|
||||
1
|
||||
diff --git a/tests/execscript b/tests/execscript
|
||||
index c1819de..9227a4a 100644
|
||||
--- a/tests/execscript
|
||||
+++ b/tests/execscript
|
||||
@@ -108,8 +108,6 @@ ${THIS_SH} ./exec6.sub
|
||||
# checks for properly deciding what constitutes an executable file
|
||||
${THIS_SH} ./exec7.sub
|
||||
|
||||
-${THIS_SH} -i ${PWD}/exec8.sub
|
||||
-
|
||||
${THIS_SH} ./exec9.sub
|
||||
|
||||
${THIS_SH} ./exec10.sub
|
||||
diff --git a/tests/read.right b/tests/read.right
|
||||
index 73cb704..a92fe7f 100644
|
||||
--- a/tests/read.right
|
||||
+++ b/tests/read.right
|
||||
@@ -33,14 +33,6 @@ a = abcdefg
|
||||
a = xyz
|
||||
a = -xyz 123-
|
||||
a = abc
|
||||
-timeout 1: ok
|
||||
-
|
||||
-timeout 2: ok
|
||||
-
|
||||
-./read2.sub: line 23: read: -3: invalid timeout specification
|
||||
-1
|
||||
-
|
||||
-abcde
|
||||
./read3.sub: line 4: read: -1: invalid number
|
||||
abc
|
||||
ab
|
||||
diff --git a/tests/read.tests b/tests/read.tests
|
||||
index f67cd00..083f4a4 100644
|
||||
--- a/tests/read.tests
|
||||
+++ b/tests/read.tests
|
||||
@@ -82,9 +82,6 @@ echo " foo" | { IFS=$':' ; read line; recho "$line"; }
|
||||
# test read -d delim behavior
|
||||
${THIS_SH} ./read1.sub
|
||||
|
||||
-# test read -t timeout behavior
|
||||
-${THIS_SH} ./read2.sub
|
||||
-
|
||||
# test read -n nchars behavior
|
||||
${THIS_SH} ./read3.sub
|
||||
|
||||
--
|
||||
2.17.2
|
||||
41
bash.spec
41
bash.spec
@ -1,6 +1,6 @@
|
||||
Name: bash
|
||||
Version: 5.0
|
||||
Release: 7
|
||||
Release: 8
|
||||
Summary: It is the Bourne Again Shell
|
||||
License: GPLv3
|
||||
URL: https://www.gnu.org/software/bash
|
||||
@ -23,38 +23,17 @@ Patch9: bash-5.0-patch9.patch
|
||||
Patch10: bash-5.0-patch10.patch
|
||||
Patch11: bash-5.0-patch11.patch
|
||||
|
||||
Patch12: bash-2.02-security.patch
|
||||
Patch13: bash-2.03-paths.patch
|
||||
Patch14: bash-2.03-profile.patch
|
||||
Patch15: bash-2.05a-interpreter.patch
|
||||
Patch16: bash-2.05b-debuginfo.patch
|
||||
Patch17: bash-2.05b-manso.patch
|
||||
Patch18: bash-2.05b-pgrp_sync.patch
|
||||
Patch19: bash-3.2-audit.patch
|
||||
Patch20: bash-3.2-ssh_source_bash.patch
|
||||
Patch21: bash-infotags.patch
|
||||
Patch22: bash-requires.patch
|
||||
Patch23: bash-setlocale.patch
|
||||
Patch24: bash-tty-tests.patch
|
||||
|
||||
# rh484809
|
||||
Patch25: bash-4.0-nobits.patch
|
||||
Patch26: bash-4.1-examples.patch
|
||||
Patch27: bash-4.1-broken_pipe.patch
|
||||
Patch28: bash-4.2-rc2-logout.patch
|
||||
Patch29: bash-4.2-coverity.patch
|
||||
# rh799958
|
||||
Patch30: bash-4.2-manpage_trap.patch
|
||||
Patch31: bash-4.2-size_type.patch
|
||||
# rh1112710
|
||||
Patch32: bash-4.3-man-ulimit.patch
|
||||
# rh1102815
|
||||
Patch33: bash-4.3-noecho.patch
|
||||
# fix bash leaks memory when LC_ALL set-rh1241533,rh1224855
|
||||
Patch34: bash-4.3-memleak-lc_all.patch
|
||||
Patch35: bash-4.4-no-loadable-builtins.patch
|
||||
|
||||
Patch9000:0001-bugfix-Forbidden-non-root-user-to-clear-history.patch
|
||||
Patch9000:bugfix-Forbidden-non-root-user-to-clear-history.patch
|
||||
Patch9001:enable-dot-logout-and-source-bashrc-through-ssh.patch
|
||||
|
||||
BuildRequires: gcc bison texinfo
|
||||
|
||||
@ -120,7 +99,7 @@ make check
|
||||
%files -f %{name}.lang
|
||||
%defattr(-,root,root)
|
||||
%license COPYING
|
||||
%config(noreplace) /etc/skel/.%{name}*
|
||||
%config(noreplace) /etc/skel/.*
|
||||
%{_bindir}/{sh,bash,alias,bg,cd,command,fc,fg,wait,bashbug}
|
||||
%{_bindir}/{hash,getopts,jobs,read,type,ulimit,umask,unalias}
|
||||
|
||||
@ -128,6 +107,8 @@ make check
|
||||
%defattr(-,root,root)
|
||||
%{_includedir}/%{name}
|
||||
%{_libdir}/pkgconfig/*.pc
|
||||
%{_libdir}/bash/*
|
||||
%exclude %{_libdir}/bash/Makefile*
|
||||
|
||||
%files help
|
||||
%defattr(-,root,root)
|
||||
@ -139,13 +120,19 @@ make check
|
||||
%exclude %{_infodir}/dir
|
||||
|
||||
%changelog
|
||||
* Wed Dec 25 2019 openEuler Buildteam <buildteam@openeuler.org> 5.0-7
|
||||
* Mon Jan 6 2020 openEuler Buildteam <buildteam@openeuler.org> - 5.0-8
|
||||
- Type:enhancement
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC:delete redundant files
|
||||
|
||||
* Wed Dec 25 2019 openEuler Buildteam <buildteam@openeuler.org> - 5.0-7
|
||||
- Type:enhancement
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC:add provides of bash-doc
|
||||
|
||||
* Thu Oct 24 2019 shenyangyang<shenyangyang4@huawei.com> 5.0-6
|
||||
* Thu Oct 24 2019 shenyangyang<shenyangyang4@huawei.com> - 5.0-6
|
||||
- Type:enhancement
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
# ~/.bash_logout
|
||||
|
||||
# System-wide .bash_logout for login shells
|
||||
# executed when a shell logout
|
||||
|
||||
@ -1,8 +1,2 @@
|
||||
# .bash_profile
|
||||
|
||||
# Get the aliases and functions
|
||||
if [ -f ~/.bashrc ]; then
|
||||
. ~/.bashrc
|
||||
fi
|
||||
|
||||
# User specific environment and startup programs
|
||||
# Source /root/.bashrc if user has one
|
||||
# [ -f ~/.bashrc ] && . ~/.bashrc
|
||||
|
||||
15
dot-bashrc
15
dot-bashrc
@ -1,15 +1,6 @@
|
||||
# .bashrc
|
||||
# Source default setting
|
||||
[ -f /etc/bashrc ] && . /etc/bashrc
|
||||
|
||||
# Source global definitions
|
||||
if [ -f /etc/bashrc ]; then
|
||||
. /etc/bashrc
|
||||
fi
|
||||
|
||||
# User specific environment
|
||||
# User environment PATH
|
||||
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
|
||||
export PATH
|
||||
|
||||
# Uncomment the following line if you don't like systemctl's auto-paging feature:
|
||||
# export SYSTEMD_PAGER=
|
||||
|
||||
# User specific aliases and functions
|
||||
|
||||
37
enable-dot-logout-and-source-bashrc-through-ssh.patch
Normal file
37
enable-dot-logout-and-source-bashrc-through-ssh.patch
Normal file
@ -0,0 +1,37 @@
|
||||
From 8d61d57541b0dbf7eb49359f7f0af53ec9724cbe Mon Sep 17 00:00:00 2001
|
||||
From: openEuler Buildteam <buildteam@openeuler.org>
|
||||
Date: Thu, 9 Jan 2020 19:02:15 +0800
|
||||
Subject: [PATCH] enable dot logout and source bashrc through ssh
|
||||
|
||||
---
|
||||
config-top.h | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/config-top.h b/config-top.h
|
||||
index 56dbd51..3c5555a 100644
|
||||
--- a/config-top.h
|
||||
+++ b/config-top.h
|
||||
@@ -94,17 +94,17 @@
|
||||
/* #define SYS_BASHRC "/etc/bash.bashrc" */
|
||||
|
||||
/* System-wide .bash_logout for login shells. */
|
||||
-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */
|
||||
+#define SYS_BASH_LOGOUT "/etc/bash.bash_logout"
|
||||
|
||||
/* Define this to make non-interactive shells begun with argv[0][0] == '-'
|
||||
run the startup files when not in posix mode. */
|
||||
-/* #define NON_INTERACTIVE_LOGIN_SHELLS */
|
||||
+#define NON_INTERACTIVE_LOGIN_SHELLS
|
||||
|
||||
/* Define this if you want bash to try to check whether it's being run by
|
||||
sshd and source the .bashrc if so (like the rshd behavior). This checks
|
||||
for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment,
|
||||
which can be fooled under certain not-uncommon circumstances. */
|
||||
-/* #define SSH_SOURCE_BASHRC */
|
||||
+#define SSH_SOURCE_BASHRC
|
||||
|
||||
/* Define if you want the case-capitalizing operators (~[~]) and the
|
||||
`capcase' variable attribute (declare -c). */
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user