PATH не пуст после /usr/bin/env -i /bin/bash --norc --noprofile

Чтобы указать время ожидания (в секундах ), используйте параметр ConnectTimeout, как указано на странице руководстваssh_config:

.

ssh -o ConnectTimeout=10 user@remotehost

Чтобы указать время ожидания для всех хостов, добавьте эту конфигурацию в раздел с подстановочными знаками в файле конфигурации ssh, обычно ~/.ssh/configдля личной конфигурации или /etc/ssh/ssh_configдля общесистемного применения:

Host *
    ConnectTimeout 10

0
14.10.2020, 05:02
1 ответ

Да, и bash, и zsh(, и dash, и mksh, и fish, по крайней мере, )устанавливают для $PATHзначение по умолчанию, если оно не указано в среде, которую они получили при запуске.

Оболочки POSIX, которые этого не делают, по-прежнему должны искать команды в пути поиска по умолчанию.

Как bash, так и zsh(, а также некоторые из модулей, которые загружаются автоматически или нет в последнем ), устанавливают ряд внутренних переменных, некоторые из которых экспортируются в среду (, а не PATH, хотя в случае bashи zsh), некоторые из которых читаются только -.

env -i zsh -fили env -i bash --norcзапустит оболочку с пустой средой.

Чтобы сбросить настройки не -только для чтения, вы можете выполнить unset ${(k)parameters}в zshили unset -v $(compgen -v)в bash(, хотя я обнаружил, что мне нужно запустить его дважды для LINESи COLUMNS, чтобы исчезнуть ).

В моем тесте, в bash, остается:

<noprompt> typeset -p
declare -r BASHOPTS="checkwinsize:cmdhist:complete_fullquote:expand_aliases:extquote:force_fignore:globasciiranges:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath"
declare -a BASH_ARGC=([0]="0")
declare -a BASH_ARGV=()
declare -a BASH_LINENO=()
declare -a BASH_SOURCE=()
declare -ar BASH_VERSINFO=([0]="5" [1]="0" [2]="17" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
declare -ir EUID="1000"
declare -a FUNCNAME
declare -x OLDPWD
declare -a PIPESTATUS=([0]="1")
declare -ir PPID="44873"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -ir UID="1000"
declare -- _="_"

И вzsh:

<noprompt> printf '%s (%s)\n' ${(kv)parameters}
parameters (association-readonly-hide-hideval-special)
HISTCMD (integer-readonly-special)
! (integer-readonly-special)
# (integer-readonly-special)
$ (integer-readonly-special)
* (array-readonly-special)
- (scalar-readonly-special)
0 (scalar-special)
ZSH_EVAL_CONTEXT (scalar-readonly-tied-special)
ZSH_SUBSHELL (integer-readonly-special)
? (integer-readonly-special)
@ (array-readonly-special)
zsh_eval_context (array-readonly-tied-special)
status (integer-readonly-special)
TTYIDLE (integer-readonly-special)
LINENO (integer-readonly-special)
PPID (integer-readonly-special)
ARGC (integer-readonly-special)
2
18.03.2021, 22:57

Теги

Похожие вопросы