
I suspect you have indeed run into the difference between: Interactive Login shell Interactive Non-Login shell Non-Interactive Login shell Non-Interactive Non-Login shell .bashrc is called in almost all cases, .bash_profile only in some and bash completions likely only in some. TMUX is lunching another shell that may be non-login shell / non-interactive. So the question is why load completions, if it's not a person the shell is responding to. When I was learning about this I started adding checks like these: *** # .bashrc if [[ $- = *i* ]]; then echo 'Interactivity!' fi if shopt -q login_shell ; then echo 'Logged In!' fi *** # .bash_profile echo ".bash_profile executed!" *** https://unix.stackexchange.com/questions/38175/difference-between-login-shel... On 5/31/19 4:54 PM, Giles Orr via talk wrote:
I've had a very similar problem with ssh host tab completion - the primary difference seemed to be that it worked on Mac and not on Linux. (I never use console these days, so I couldn't tell you about that.) I solved it as you did - by a more specific call to the completion file(s) in by bashrc. Although I think I sourced the one specifically for SSH hosts.
I can't remember if it was here (ie. TLUG) or somewhere else that I saw a conversation about the incredibly tortuous routing of Bash startup. It was months or even a couple years ago. Essentially, someone had attempted to map out the decision process behind what files got parsed when Bash started depending on all the little check-boxes: is it interactive, is it console, is it login, dozens of others. The flow chart created was enough to make a hardened system administrator cry. So the direct route - add what you want to the bashrc - is definitely preferred to trying to actually debug what happened.
On Fri, 31 May 2019 at 11:02, Daniel Wayne Armstrong via talk <talk@gtalug.org <mailto:talk@gtalug.org>> wrote:
Resolved the issue by adding ...
source /etc/profile.d/bash_completion.sh
... to my ~/.bashrc, though I still don't know why it would auto-complete OK inside tmux.
On Thu, May 30, 2019 at 4:24 PM Daniel Wayne Armstrong <daniel@circuidipity.com <mailto:daniel@circuidipity.com>> wrote:
Hello all ... I am currently running Debian Buster and Bash shell. I have a few Host aliases defined in my ~/.ssh/config. Example: Host test-server. So when, in console, I type ...
$ ssh tes
... and hit Tab, then auto-completion fills out ...
$ ssh test-server
When I try to do the same thing in a terminal (urxvt), tab completion does *not* work. The complete host alias has to be entered.
*But* tab completion for ssh host aliases *does* work if entered within tmux running in the terminal.
Any idea how I can get tab completion working for ssh host aliases in the terminal?
-- Daniel Wayne Armstrong https://www.circuidipity.com <http://www.circuidipity.com> Accomplish the great task by a series of small acts. -- Lao Tzu
-- Daniel Wayne Armstrong https://www.circuidipity.com <http://www.circuidipity.com> Accomplish the great task by a series of small acts. -- Lao Tzu
--- Talk Mailing List talk@gtalug.org <mailto:talk@gtalug.org> https://gtalug.org/mailman/listinfo/talk
-- Giles https://www.gilesorr.com/ gilesorr@gmail.com <mailto:gilesorr@gmail.com>
--- Talk Mailing List talk@gtalug.org https://gtalug.org/mailman/listinfo/talk
-- Scott Sullivan