Quando eu corro $SHELL
de tmux
recebo /bin/sh
, e /etc/shells
isso é listado como o primeiro item da lista. Então, tmux
pegue-o de lá e use-o como o shell?
Quando eu corro tmux show -g
eu recebo:
assume-paste-time 1
base-index 0
bell-action any
bell-on-alert off
default-command ""
default-shell "/bin/sh"
destroy-unattached off
detach-on-destroy on
display-panes-active-colour red
display-panes-colour blue
display-panes-time 1000
display-time 750
history-limit 2000
lock-after-time 0
lock-command "lock -np"
message-command-style fg=yellow,bg=black
message-style fg=black,bg=yellow
mouse off
mouse-utf8 on
prefix C-b
prefix2 <NONE>
renumber-windows off
repeat-time 500
set-remain-on-exit off
set-titles off
set-titles-string "#S:#I:#W - "#T" #{session_alerts}"
status on
status-interval 15
status-justify left
status-keys emacs
status-left "[#S] "
status-left-length 10
status-left-style default
status-position bottom
status-right " "#{=21:pane_title}" %H:%M %d-%b-%y"
status-right-length 40
status-right-style default
status-style fg=black,bg=green
status-utf8 on
update-environment "DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"
visual-activity off
visual-bell off
visual-silence off
word-separators " -_@"
default-shell "/bin/sh"
parece ser de interesse... mas também vou notar que não tenho um /etc/tmux.conf
para padrões.
Não. O tmux preenche o shell padrão quando o servidor é iniciado olhando primeiro para $SHELL, se isso não for válido, ele tenta o shell do usuário (do banco de dados passwd) e se isso não funcionar, então /bin/sh.
/etc/shells apenas lista quais shells um usuário pode definir como seu shell (com chsh ou outros enfeites), ele não especifica qual é o shell real de qualquer usuário.
Não. A escolha do shell que deve ser executado é descrita em
man tmux
:Primeiro,
tmux
começa$SHELL
.$SHELL
geralmente é definido no estágio inicial quando você faz login no sistema, por exemplo, pelo gerenciador de login do X.Em seguida, ele analisa
/etc/passwd
usandogetpwuid()
o que você pode ler mais emman getpwuid
. Finalmente, se ambos os métodos falharem, ele será iniciado/bin/sh
.Como você vê,
/etc/shells
não é usadotmux
para determinar qual shell executar. Você pode até renomeá-lo temporariamente etmux
ainda funcionaria:/etc/shells
especifica os nomes de caminho de shells de login válidos (opcional) conforme descrito em FHS . Por exemplo, é usado porchsh
para validar o nome do shell.