Какая польза от использования точки до / дома?

Чтобы выполнить скрипт, мы вводим ./script.ksh, но сначала для подключения к базе данных мы идем по следующему пути, набрав . / . /

 $ . /home/sqllib/db2profile $ db2 

почему мы должны использовать . / . / до дома?

2 Solutions collect form web for “Какая польза от использования точки до / дома?”

. что вы находите как часть путей, не имеет ничего общего с . команда.

. это специальное имя файла, которое существует в каждом каталоге и обозначает текущий каталог. Таким образом ./script.ksh обозначает файл script.ksh в текущем каталоге и так делает ././script.ksh и так делает ./././script.ksh (неважно, сколько раз вы спрашиваете pathname resolver, чтобы перейти от текущего каталога к себе самому себе …). Среди других причин мы используем ./script.ksh вместо просто script.ksh чтобы было ясно, что мы имеем в виду путь, а не команду оболочки.

. также является встроенной оболочкой, которая делает оболочку источником содержимого файла, предоставленного ей в качестве аргумента в текущую среду оболочки, в отличие от ее выполнения как внешней команды. . команда также может записывать source во многие оболочки (это псевдоним совместимости, который исходит из наследия csh ). Обратите внимание: поскольку это команда оболочки (которая состоит из одного символа пунктуации, например:), за ней всегда следуют пробелы.

В этом случае . сообщает оболочке выполнить следующий скрипт (в данном случае /home/sqllib/db2profile ) в контексте текущего процесса оболочки вместо запуска нового процесса оболочки для запуска скрипта.

Причина этого заключается в том, что скрипт, чье имя следует за ним . вероятно, создает переменные среды, которые понадобятся другим программам. Без . перед именем сценария оболочки будет запущен новый процесс для запуска сценария, и, таким образом, любые переменные среды, созданные сценарием, будут потеряны при завершении сценария и завершении его процесса. Положив . перед скриптом сценарий запускается текущим процессом оболочки, так что любые переменные среды, которые создаются сценарием, создаются в контексте текущей оболочки, и поэтому эти переменные среды доступны для скриптов и программ, которые запускаются позже, например, команда db2 на следующей строке.

  • неожиданный EOF при поиске соответствия `` '- скрипт bash
  • Как читать из именованного канала после завершения процесса записи?
  • Защищенные переменные среды?
  • получить приглашение оболочки в python
  • / usr / bin / ls: / usr / bin / ls: невозможно выполнить двоичный файл
  • Использование sed для преобразования строк в строки
  • Должен ли я использовать «sudo» в сценариях, которые я пишу?
  • Разница между выполнением нескольких команд с && и;
  • лучшее использование find - rvm.sh
  • Как понять порядок между расширениями?
  • Как я * надежно * и * просто * получить текущее имя интерпретатора оболочки?
  • Interesting Posts

    bash alias, начинающийся с pipe, не работает?

    Как переопределить исходный код в сценарии оболочки Linux?

    Клиент передачи не может получить доступ к установленному файлу NFS

    Забыли пароль encfs

    Как я могу повлиять на отображение виртуального дисплея (X Server) после загрузки?

    denyhosts блокирует доступ существующих пользователей от неизвестных (новых) IP-адресов

    Преобразовать одну Fedora в другую?

    USB-CAN-адаптер работает вручную, но не через udev

    Как найти все совпадения строки в каталоге?

    Новое ядро ​​автоматически не подключается к сети

    Список подкаталогов, содержащих определенное имя файла

    Почему приоритеты процесса не соблюдаются?

    RHEL как синхронизировать сетевые настройки между графическим интерфейсом и файлами конфигурации в / etc / sysconfig / network-scripts /?

    Ярлык щелчка правой кнопкой мыши (Shift f10) не работает в некоторых приложениях

    Попытка проверить повреждение файловой системы ZFS с помощью dd не удается

    Linux и Unix - лучшая ОС в мире.