Удалить список всех сетевых подключений

Ошибка

Что касается вашей исходной команды, ответ тердона уже очень хорошо освещает происходящее и что должно произойти. Давайте проанализируем это чуть более подробно.

То, что вы пытаетесь сделать, это назначение переменных, которое должно иметь форму:

varName=value

Однако из-за пространства это рассматривается как команда PATH с аргумент командной строки, состоящий из =, затем содержимого переменной $PATH и подстановки команды pwd, все соединенные в одну строку:

PATH =$PATH:`pwd`

Конечно, такой команды нет как PATH, следовательно, вы получите сообщение об ошибке.

Shell рассматривает простые команды и их аргументы как список одного или нескольких токенов, разделенных пробелами (возможно, до этого необязательного назначения переменных). Другими словами, форма должна быть:

[VAR=value] word [arg1 [arg2 [arg3] ]...]

Конечно, это не то, что желательно в этом случае.

Собственная команда

So что должно было быть сделано:

PATH=$PATH:`pwd`    

Здесь мы имеем правильное назначение переменных, где в соответствии с ответом terdon оболочка bash сначала выполнит переменное расширение, т. е. замените $PATH тем, что у вас есть в этой переменной в настоящее время, затем выполните подстановку команд, где он запускает pwd, и заменяет его выходом pwd. В итоге все, что возвращается к переменной PATH.

Несколько ключевых наблюдений:

Поскольку это переменное назначение, вам не нужно указывать переменную $PATH, но обычно вы должны избегать нежелательного поведения. См. Раздел «Двойное котирование». Необходимые формы замены подстановок в настоящее время не рекомендуются. В этом конкретном случае все в порядке, но в целом обратные ссылки не позволяют хорошо встраивать и многострочные команды. PATH переменная используется оболочкой для поиска команд, а порядок каталогов в этом списке задает приоритет там, где будут выполняться команды. Так, например, когда вы выполняете команду, оболочка сначала проверит, является ли команда встроенной, если она не будет, тогда она просматривает все каталоги в переменной PATH. [F18] заставит оболочку пересекать все остальное, и только затем перейдите в каталог, заданный pwd. Напротив, PATH=$(pwd):$PATH сначала начнет поиск из каталога, возвращаемого pwd. Поэтому порядок задания имеет значение.
1
задан 11 March 2017 в 12:49

0 ответов

Другие вопросы по тегам:

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