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
Wireless Application Protocol and the mobile web before the web
Converting Valgrind callgrinds to SVG format
Simple world clock with eInk display and Raspberry Pi Zero
Disable mouse wake from suspend with systemd service
Using sentiment analysis for clickbait detection in RSS feeds
Remote work and how it affects the daily lives of people
Most likely to succeed in the year of 2011
Using GoAccess with Nginx to replace Google Analytics
Debian based riced up distribution for Developers and DevOps folks
The strange case of Elasticsearch allocation failure
Golang profiling simplified
What I've learned developing ad server