Почему не делает моего нового cygwin .bashrc интерактивная работа проверки?

заголовками openssl обычно предоставляют libssl-dev на Ubuntu. Существует также a --with-openssl=DIR ./configure опция для nginx, который позволяет Вам вручную указать путь к openssl источникам. Какая-либо причина, почему Вы создаете его из источника вместо того, чтобы использовать Ваш диспетчер пакетов?

3
09.02.2012, 18:41
2 ответа

Если Вы выполняете единственную команду (pwd в Вашем случае) через ssh, это не интерактивная оболочка, таким образом, поведение корректно, по-моему.

Необходимо установить Ваш PATH в ~/.profile или ~/.bash_profile, не в ~/.bashrc.

Как найдено в bash(1) страница справочника:

   PARAMETERS
      (...)
      Special Parameters
          The shell treats several parameters specially.   These  parameters  may
          only be referenced; assignment to them is not allowed.
          (...)
          -      Expands  to  the  current option flags as specified upon invoca-
                 tion, by the set builtin command, or  those  set  by  the  shell
                 itself (such as the -i option).

Так i содержавшийся в $- средства, что -i опция использовалась (или автоматически устанавливалась оболочкой, будучи интерактивной).

7
27.01.2020, 21:10

Ответ enzotib верен (поэтому его проголосовали выше), но я решил дополнить его деталями, касающимися запуска оболочки, когда она запускается через SSH.

Читатели документации Bash могут задаться вопросом, зачем нужен .bashrc для проверки того, запущен ли он в интерактивной оболочке, учитывая, что .bashrc используется только для интерактивных оболочек Bash. Тем не менее, стандартные ~/.bashrc, входящие в состав большинства (если не всех) Unix-подобных систем, включают некоторый тип проверки (тестирование $- или $PS1), чтобы убедиться, что текущая оболочка является интерактивной.

Причина этого в том, что Bash имеет специальный случай для удаленных оболочек. Хотя неинтерактивные оболочки Bash обычно не запускают ~/.bashrc команды при запуске, особый случай имеет место, когда оболочка Вызвана удаленным демоном оболочки:

Bash пытается определить, когда она запускается со стандартным входом подключен к сетевому соединению, как при выполнении удаленным демоном оболочки демоном, обычно rshd, или демоном безопасной оболочки sshd. Если Bash определяет, что его запускают таким образом, он читает и выполняет команды из ~/.bashrc, если этот файл существует и доступен для чтения. Он не будет делать этого, если вызывается как sh.

Для получения дополнительной информации см. мой ответ на Почему bashrc проверяет, является ли текущая оболочка интерактивной?.

2
27.01.2020, 21:10

Теги

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