Способ решить это с ssh-agent
и ssh-add
:
$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa:
После этого пароль сохраняется для текущей сессии. и не будет спрошен снова.
Из Ваших комментариев Вы, кажется, смущены точно, какова оболочка. Ядро ответственно за управление системой. Это - часть, которая на самом деле загружает и запускает программы, файлы доступов, выделяет память и т.д. Но ядро не имеет никакого пользовательского интерфейса; можно только общаться с ним при помощи другой программы как посредник.
Оболочка является программой, которая печатает подсказку, читает строку входа от Вас и затем интерпретирует его как одну или несколько команд, чтобы управлять файлами или запустить другие программы. Перед изобретением GUI оболочка была основным пользовательским интерфейсом ОС. На MS-DOS назвали оболочку command.com
и немного людей когда-либо пытались использовать другого. На Unix, однако, долго было несколько оболочек, от которых могли выбрать пользователи.
Они могут быть разделены на 3 типа. Совместимые с границей оболочки используют синтаксис, полученный из исходной Оболочки Bourne. Оболочки C используют синтаксис от исходной оболочки C. Затем существуют нетрадиционные оболочки, которые изобретают их собственный синтаксис, или заимствуют один из некоторого языка программирования и обычно намного менее популярны, чем первые два типа.
Встроенная команда является просто командой, которую оболочка выполняет сама, вместо того, чтобы интерпретировать ее как запрос, чтобы загрузить и запустить некоторую другую программу. Это имеет два основных эффекта. Во-первых, это обычно быстрее, потому что загрузка и запущение программы занимают время. Конечно, чем дольше команда берет для выполнения, тем менее значительный время загрузки сравнивается общее время выполнения (потому что время загрузки является довольно постоянным).
Во-вторых, встроенная команда может влиять на внутреннее состояние оболочки. Вот почему команды как cd
должно быть встроено, потому что внешняя программа не может изменить текущий каталог оболочки. Другие команды, как echo
, могло бы быть встроено для эффективности, но нет никакой внутренней причины, они не могут быть внешними командами.
То, какие команды встроены, зависит от оболочки, которую Вы используете. Необходимо будет консультироваться с его документацией для списка (например, bash
встроенные команды перечислены в Главе 4 его руководства). type
команда может сказать Вам, если команда встроена (если Ваша оболочка совместима с POSIX), потому что POSIX требует этого type
будьте встроенным. Если which
не встроенное в Вашей оболочке, затем она, вероятно, не будет знать о Вашей оболочке, создал-ins, но будет просто искать внешние программы.
Существует три уровня встроенных утилит:
Некоторые утилиты являются действительно частью оболочки как язык программирования, даже при том, что они не зарезервированные слова. Они - утилиты потока управления (.
, :
, break
, continue
, return
, trap
, exit
, exec
, eval
), связанные с параметром утилиты (set
, unset
, shift
, export
, readonly
, local
¹, typeset
¹), утилиты псевдонима (alias
², unalias
²) и times
³. Они особенные созданный-ins получают специальный режим:
foo=bar utility
имеет другое значение: это - обычное присвоение параметра (т.е. эквивалентный foo=bar; utility
), вместо того, чтобы присвоить среде на время утилиты только.Некоторые утилиты должны быть реализованы в оболочке, потому что они действуют на внутренние настройки оболочки. Это включает:
cd
, dirs
, pushd
, popd
;bg
, disown
, fg
, jobs
, wait
;builtin
, command
, hash
, read
, type
, ulimit
, umask
;fc
, history
, bind
.echo
, printf
, test
, true
, false
.Усовершенствованные оболочки, такие как удар, ksh и zsh обычно больше создавали-ins, часто для реализования нестандартных опций (обычно для взаимодействия). Руководство каждой оболочки скажет Вам, какие команды встроены, хотя некоторые оболочки (zsh, по крайней мере) поддерживают динамично-загружаемые-модули, которые могут обеспечить более созданный-ins.
¹ Неизвестный POSIX, но особенный в ksh и нескольких других оболочках.
² Обычный в POSIX, но особенный в ksh и нескольких других оболочках.
³ В ksh
, times
обертка вокруг time
ключевое слово: это - псевдоним для { { time;} 2>&1;}
. Обратите внимание, что POSIX позволяет time
чтобы быть внешней утилитой с обычным парсингом или ключевым словом, которое относится к целому конвейеру (который это находится в ksh, избейте zsh).
while IFS= read -r line
?
– Sergiy Kolodyazhnyy
15.12.2017, 18:37
read
не встроенное специальное предложение, таким образом, IFS=read
устанавливает переменную только на время команды.
– Gilles 'SO- stop being evil'
15.12.2017, 21:56
Встроенной является команда, обеспеченная оболочкой, а не внешней программой. Вот списки для bash
builtins (они также перечислены в странице справочника удара), и zsh
builtins. ksh
предоставляет список путем выполнения builtin
.
Чтобы знать, является ли конкретная команда встроенным, можно работать type command
. Попробовать type for
и type ls
видеть это.
type
кажется, добивается цели; спасибо за это..., но я все еще задаюсь вопросом, что "обеспеченный оболочкой" означает... Возможно, я должен более полно понять, как оболочка касается ядра...., но не в 2:00.. Я возвращусь к этому завтра,
– Peter.O
16.04.2011, 19:48
Каждый дистрибутив и оболочка имеют различный набор команд по сравнению со встроенными функциями оболочки. Обычно идея состоит в том, что оболочки создают - в наиболее распространенных и простых функциях, чтобы сэкономить время, скорость, и интегрируются, будет с остальной частью их набора функций. Издержки намного ниже, так как они не должны запускать другой системный процесс. Однако это возможно к смешиванию и подгонке. Вы могли бы выполнить одну оболочку, которая имеет здание для чего-то, но имейте ту команду в своей системе также. Обычно встроенное брало бы приоритет, но Вы могли управлять этим.
Можно легко узнать, является ли определенная команда встроенным или не путем выполнения type mycommand
. Большинство страниц справочника оболочки также имеет список своего builtins.
Править: Использовать type
узнать, является ли команда встроенным, и если нет which
изучить, откуда это будет выполняться.
=>"/bin/echo" and
введите эхо=>"echo is a shell builtin", but 'which dd
=>"/bin/dd" и type dd
=> "dd/bin/dd"... так, я - часть путь там....
– Peter.O
16.04.2011, 19:44
type
лучший индикатор того, что выполняется, но Вы замечаете echo
и встроенное и существует приложение с тем именем. Если бы Ваша оболочка не имела встроенного системой, то можно быть выполнить.
– Caleb
16.04.2011, 19:53
which
не обязательно встроенная команда, и если это не будет, то это не будет знать об оболочке, создал-ins. POSIX требует этого type
будьте встроенной командой, таким образом, она всегда знает о созданном-ins.
– cjm
16.04.2011, 20:34
which
кому: type
или некоторый набор опций, например. alias which='type -path'
- это могло быть источником беспорядка.
– Random832
16.04.2011, 22:35
which
заменяется type
. Я использовал который, много раз, не знание type
и был очень удивлен к lern, этому which
является только правильным, при решении между программами.
– user unknown
17.04.2011, 02:01