--- a/builtins/pushd.def.orig +++ b/builtins/pushd.def @@ -1,7 +1,7 @@ This file is pushd.def, from which is created pushd.c. It implements the builtins "pushd", "popd", and "dirs" in Bash. -Copyright (C) 1987-2015 Free Software Foundation, Inc. +Copyright (C) 1987-2015, 2019 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -34,6 +34,8 @@ Options: -n Suppresses the normal change of directory when adding directories to the stack, so only the stack is manipulated. + -q Suppresses printing the directory stack after manipulation. + Arguments: +N Rotates the stack so that the Nth directory (counting from the left of the list shown by `dirs', starting with @@ -66,6 +68,8 @@ Options: -n Suppresses the normal change of directory when removing directories from the stack, so only the stack is manipulated. + -q Suppresses printing the directory stack after manipulation. + Arguments: +N Removes the Nth entry counting from the left of the list shown by `dirs', starting with zero. For example: `popd +0' @@ -168,6 +172,7 @@ static int get_dirstack_index __P((intmax_t, int, int *)); #define ROTATE 0x02 #define LONGFORM 0x04 #define CLEARSTAK 0x08 +#define QUIET 0x10 int pushd_builtin (list) @@ -218,6 +223,10 @@ pushd_builtin (list) { flags |= NOCD; } + else if (ISOPTION (list->word->word, 'q')) + { + flags |= QUIET; + } else if (ISOPTION (list->word->word, '-')) { list = list->next; @@ -300,7 +309,8 @@ pushd_builtin (list) if (j == EXECUTION_SUCCESS) { add_dirstack_element ((flags & NOCD) ? savestring (list->word->word) : current_directory); - dirs_builtin ((WORD_LIST *)NULL); + if ((flags & QUIET) == 0) + dirs_builtin ((WORD_LIST *)NULL); if (flags & NOCD) free (current_directory); return (EXECUTION_SUCCESS); @@ -334,6 +344,10 @@ popd_builtin (list) { flags |= NOCD; } + else if (ISOPTION (list->word->word, 'q')) + { + flags |= QUIET; + } else if (ISOPTION (list->word->word, '-')) { list = list->next; @@ -400,7 +414,8 @@ popd_builtin (list) pushd_directory_list[i] = pushd_directory_list[i + 1]; } - dirs_builtin ((WORD_LIST *)NULL); + if ((flags & QUIET) == 0) + dirs_builtin ((WORD_LIST *)NULL); return (EXECUTION_SUCCESS); }