nba@sysware.sysware.dk (Niels Baggesen) (02/28/90)
I have recently installed bash-1.04 on my Sys V.3.1 box, and like it very
much. I have changed my login shell from csh to bash. I have found a few
problems that I have fixed as follows:
1) globbing fails when the patterns starts with a slash (such as "echo /u*")
2) hitting BREAK while bash is in command mode loses the echo flag and makes
bash very unresponsive until you type "stty echo"
3) if you define a function that start a background job, such as
bpr() {
pr $* | lp &
}
when you then call bpr, it will echo the pid of the background process,
but then hangs waiting for it to complete.
Also, the "wait" command is a no-op.
Thank you for creating this nice thing. If there exist updates to bash I
would like to know about them.
Niels Baggesen.
PS: my installation options are SYSV USGr3
Context diff of my changes follows:
*** glob.c.org Sat Sep 23 05:35:45 1989
--- glob.c Tue Feb 20 08:33:43 1990
***************
*** 416,421 ****
--- 416,422 ----
else
{
directory_len = filename - pathname;
+ if (directory_len == 0) directory_len = 1;
directory_name = (char *) alloca (directory_len + 1);
bcopy (pathname, directory_name, directory_len);
directory_name[directory_len] = '\0';
***************
*** 429,436 ****
--- 430,439 ----
char **directories;
register unsigned int i;
+ /*
if (directory_name[directory_len - 1] == '/')
directory_name[directory_len - 1] = '\0';
+ */
directories = glob_filename (directory_name);
***************
*** 534,546 ****
int argc;
char **argv;
{
! unsigned int i;
! for (i = 1; i < argc; ++i)
{
! char **value = glob_filename (argv[i]);
if (value == NULL)
! puts ("Out of memory.")
else if ((int) value == -1)
perror (argv[i]);
else
--- 537,549 ----
int argc;
char **argv;
{
! unsigned int i, j;
! for (j = 1; j < argc; ++j)
{
! char **value = glob_filename (argv[j]);
if (value == NULL)
! puts ("Out of memory.");
else if ((int) value == -1)
perror (argv[i]);
else
*** nojobs.c.org Wed Nov 1 22:26:13 1989
--- nojobs.c Wed Feb 28 10:11:33 1990
***************
*** 172,178 ****
programming_error ("got errno %d while waiting for %d", errno, pid);
}
-
#ifdef SYSV
sigrelse (oldmask);
#else
--- 172,177 ----
***************
*** 246,252 ****
}
wait_for_background_pids ()
! {}
! wait_for_single_pid ()
! {}
--- 245,257 ----
}
wait_for_background_pids ()
! {
! while (wait_for (0))
! ;
! }
! wait_for_single_pid (pid)
! int pid;
! {
! wait_for (pid);
! }
*** readline/readline.c.org Sat Nov 4 14:42:01 1989
--- readline/readline.c Tue Feb 27 14:09:12 1990
***************
*** 2104,2109 ****
--- 2104,2110 ----
#ifndef HANDLE_SIGNALS
tio.c_lflag &= ~ISIG;
+ tio.c_iflag &= ~BRKINT;
#endif
tio.c_cc[VEOF] = 1; /* really: MIN */
*** execute_cmd.c.org Fri Nov 3 22:11:24 1989
--- execute_cmd.c Wed Feb 28 10:03:15 1990
***************
*** 109,115 ****
if (!command || breaking || continuing)
return (EXECUTION_SUCCESS);
-
/* If a command was being explicitly run in a subshell, or if it is
a shell control-structure, and it has a pipe, then we do the command
in a subshell. */
--- 109,114 ----
***************
*** 222,228 ****
if (asynchronous)
describe_pid (last_made_pid);
! else
exec_result = wait_for (last_made_pid);
}
}
--- 221,227 ----
if (asynchronous)
describe_pid (last_made_pid);
! else if (last_made_pid != last_asynchronous_pid)
exec_result = wait_for (last_made_pid);
}
}
--
+-------------------------------------------------------------------------+
| Niels Baggesen, Sysware, Tordenskjoldsgade 23 A, 8200 Aarhus N, Denmark |
| Phone: +45 86 10 20 55 Fax: +45 86 10 26 41 E-mail: nba@sysware.dk |
+------------- If you think I expressed an opinion, I am wrong ---------+