Fix bind warning in .profile on login in Ubuntu

post, Sep 8, 2020, on Mitja Felicijan's blog

Recently I moved back to bash as my default shell. I was previously using fish and got used to the cool features it has. But, regardless of that, I wanted to move to a more standard shell because I was hopping back and forth with exporting variables and stuff like that which got pretty annoying.

So I embarked on a mission to make bash more like fish and in the process found that I really missed autosuggest with TAB on changing directories.

I found a nice alternative that emulates zsh like autosuggestion and autocomplete so I added the following to my .bashrc file.

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"
bind "set completion-ignore-case on"
bind "set menu-complete-display-prefix on"
bind '"\e[Z":menu-complete-backward'

I haven't noticed anything wrong with this and all was working fine until I restarted my machine and then I got this error.

Profile bind error

When I pressed OK, I got into the Gnome shell and all was working fine, but the error was still bugging me. I started looking for the reason why this is happening and found a solution to this error on Remote SSH Commands - bash bind warning: line editing not enabled.

So I added a simple if [ -t 1 ] around bind statements to avoid running commands that presume the session is interactive when it isn't.

if [ -t 1 ]; then
  bind "TAB:menu-complete"
  bind "set show-all-if-ambiguous on"
  bind "set completion-ignore-case on"
  bind "set menu-complete-display-prefix on"
  bind '"\e[Z":menu-complete-backward'
fi

After logging out and back in the problem was gone.

Other posts

DateTitle
Profiling Python web applications with visual tools
What would DNA sound if synthesized to an audio file
Wireless sensor networks
Using custom software with Github Actions to deploy a site
Trying to build a New kind of terminal emulator for the modern age
Golang profiling simplified
Converting Valgrind callgrinds to SVG format
Disable mouse wake from suspend with systemd service
The abysmal state of GNU/Linux and a case against shared object libraries