Какой метод использует оболочка входа в систему для чтения / etc / profile?

Вы выбрали непростого персонажа. Например, если бы вы попробовали Control-P , это было бы немного проще, т.е. (используя bindkey не bind ):

bindkey ^p detach

, и он работал. Вы можете попробовать то же самое с ^ q , и это, вероятно, не сработает. Проблема в том, что Control-Q также используется вашим терминалом для управления потоком (xon / xoff). Поскольку вас, вероятно, не интересует управление потоком, вы можете отключить его на своем tty с помощью команды оболочки

stty -ixon

, а затем Control-Q должен работать.

2
24.11.2018, 21:57
2 ответа

Это источник. Разница между выполнением и поиском объясняется в этом посте. Важным отличием здесь является то, что при выборе источника команды в исходном файле выполняются в текущей оболочке. Это означает, что любые переменные, определенные в файле, теперь будут доступны в оболочке. Чтобы проиллюстрировать разницу, попробуйте следующее:

$ cat foo        ## a simple file with a variable definition
var="hello"
$ chmod +x foo   ## make file executable
$ ./foo          ## execute
$ echo "$var"    ## var is not set in the parent shell

$ . foo          ## source
$ echo "$var"    ## var is now set in the parent shell
hello

Таким образом, поскольку /etc/profile должен иметь возможность воздействовать на оболочку, из которой он был прочитан, он получен и не выполняется. .

10
27.01.2020, 21:49

Источником этих файлов является оболочка.

Выполнение этого в дочернем процессе означало бы, что оболочка не будет иметь переменные и т. д., установленные в своей собственной среде, поскольку они были бы установлены в среде дочернего процесса (это отдельные). Дочерний процесс не может передавать свою среду родительскому процессу.

См. также: Как сделать переменную из подоболочки доступной в родительской оболочке

4
27.01.2020, 21:49

Теги

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