I know that to list all aliases in a given bash session with alias -p. Is there a way to get a list of all the temporary aliases in a given bash session, i.e. all aliases that aren't in my bash profile?



It's not that simple. There is no concept of "temporary" aliases in bash, and for bash any command executed by sourcing .bashrc is the same as any you type into the command line. Moreover the bash profile files could define some aliases only under some circumstances.

You could save into a variable (or file) the aliases which are set after the bash profile files are executed and then, when you need it, check the difference between such variable and the aliases currently set:

$ BASE_ALIAS="$(alias | sort)"
$ alias tmp_alias=""
$ unalias ls
$ diff <( echo "$BASE_ALIAS" ) <( alias | sort )
< alias ls='ls --color=auto'
> alias tmp_alias=''

diff shows that an alias ls has been removed and an alias tmp_alias has been added since the declaration of BASE_ALIAS.


You could do this with the following:

comm -2 -3 --nocheck-order <(alias -p) <(bash -l -c 'alias -p')

This works by comparing the current list of aliases with the aliases present in a brand new shell.
The comm utility is used to show only lines that are present in the first command <(alias -p). The --nocheck-order is necessary to keep it from complaining that the alias list isnt in order, even though it really is...

  • The aliases defined by the bash profile files for a brand new shell could be different from the ones defined by those same files for the current shell (i.e. [[ $(( $RANDOM % 2 )) == 0 ]] && alias ...). Nice hint about using comm though! – peoro Apr 18 '12 at 1:27
  • @peoro nobody is going to do that though. Seriously, you start a shell from the exact same TTY as the original shell, the environment is the same, there is no reason why aliases would be different. – Patrick Apr 18 '12 at 13:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.