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-shell-and-non-login-shell/46856#46856
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
<[email protected] <mailto:[email protected]>> 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
<[email protected] <mailto:[email protected]>> 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
[email protected] <mailto:[email protected]>
https://gtalug.org/mailman/listinfo/talk
--
Giles
https://www.gilesorr.com/
[email protected] <mailto:[email protected]>
---
Talk Mailing List
[email protected]
https://gtalug.org/mailman/listinfo/talk
--
Scott Sullivan
---
Talk Mailing List
[email protected]
https://gtalug.org/mailman/listinfo/talk