Это, вероятно, находится в вашем аккаунте пользователя .bashrc
, например, после выполнения таких инструкций, как Использование R на узле ]. RPM редко устанавливается с использованием LD_LIBRARY_PATH
, поэтому лучше всего искать в пользовательских настройках.
Если вы не видите его в .bashrc
, затем
cd /etc
grep -l -r /opt/openmpi/lib .
будет следующим местом для поиска, показывая вам имена файлов, в которых могла быть сделана настройка, например, /etc/profile.d / *
Я бы обычно не считал их "операторами". Я имею в виду, что обычно операторы возвращают значения. &
и ;
не возвращают. Вместо этого они завершают операторы. Но если рассматривать их как операторы, то они работают над одним высказыванием - так что это постфиксные унарные операторы, я полагаю.
Они начинаются слева направо. Обратите внимание, что в случае &
он выполняется в фоновом режиме асинхронно: echo 1 & echo 2 & echo 3
может вывести 1, 2 и 3 в любом порядке (потому что даже если они были запущены по порядку, ядро может не запланировать их так, чтобы они выводились по порядку). Но echo 1; echo 2; echo 3
всегда будет печатать их в числовом порядке. echo 1; echo 2 & echo 3
всегда будет печатать сначала 1, но 2 и 3 могут быть в любом порядке.
Чтобы добавить к ответу Дероберта и проанализировать команду, которую вы включили в свой вопрос:
echo 1 ; echo 2 & echo 3; echo 4 & echo 5 ; echo 6 &
Это означает в псевдокоде:
print 1 (and complete this step before continuing)
start a process in the background that will eventually print 2,
and keep going as soon as the process has been *started*
print 3 (and complete this before continuing)
start a background process that will eventually print 4,
and keep going as soon as it has started
print 5 (complete this before continuing)
start a background process that will print 6.
Также обратите внимание, что любая команда оболочки должна быть завершена (будь то &
или ;
или новая строка или конец файла или что-то еще, о чем я сейчас не думаю), иначе оболочка не будет знать, когда прекратить считывание дополнительных символов как часть этой команды и фактически выполнить команду.
Обратите внимание, что в bash есть встроенные команды, которые очень похожи на общий случай командной строки. Я пропущу этот аспект.
Но в целом командная строка представляет собой серию команд, разделенных специальными знаками пунктуации, а не операторами.
Команда - это имя исполняемого файла (wh ich можно искать через переменную среды PATH.) Это программа, которая будет выполняться для выполнения команды.
После команды идут строки, разделенные пробелами, которые передаются команде в виде строк.Но есть специальные символы пунктуации, которые необходимо экранировать (используя \
'или используя кавычки), если вы хотите, чтобы они были частью аргумента.
Знаки пунктуации имеют эффекты.
Специальные знаки препинания, такие как '<', '>' и его аналог, определяют стандартный ввод и вывод ошибки для команды
'|' для завершения одной команды и перенаправления ее стандартного вывода на стандартный ввод следующих команд
';' выполнить предыдущую команду и дождаться ее завершения. т.е. работать на переднем плане.
'&', чтобы выполнить предыдущую команду, но продолжить процесс командной строки, не дожидаясь завершения. т.е. работать в фоновом режиме.
Так что имейте в виду, что эти синтаксические знаки предназначены для того, чтобы вы могли собрать все вместе и сделать что-то вроде
echo perl myperlprogram.pl \
Это создает строку, использующую echo
, которая является другой командой оболочки, для выполнения программы perl, и отправляет эту строку команде at
, чтобы запустить ее как пакетное задание позже. Но обратите внимание, что <
экранируется, поэтому он передается в качестве аргумента в echo
(который отправит его на по адресу
в качестве входных данных) вместо установки стандарта ввод сразу. Когда пакетная система и выполняет командную строку THEN, она устанавливает стандартный ввод программы perl.
Существуют уточнения, касающиеся встроенных команд и таких вещей, как круглые скобки, которые можно выучить после понимания основ