В Cygwin почему echo $ PATH работает, но $ PATH не работает?

362
Hashim

Как видно здесь, выполнение echo $PATHдает мне мой полный PATH, но выполнение просто $PATHдает неполную версию, которая выглядит так, как будто она где-то не экранирована должным образом:

В Cygwin почему echo $ PATH работает, но $ PATH не работает?

Тем не менее, когда я просматриваю свои файлы конфигурации, единственные соответствующие строки для PATH выглядят так:

PATH=$PATH 

... .bashrcи ...

export PATH=usr/local/sbin:/usr/sbin:$PATH export PATH=/sbin:$PATH export PATH=/cygdrive/b/users/me/desktop:$PATH 

... в .bash_profile. Мне кажется, что оба правильно отформатированы, поэтому я не уверен, что здесь происходит. Кто-нибудь еще может пролить свет на это?

1
Как правило, первым делом в командной строке должно быть имя * command * (ну или назначение). `$ PATH` - это переменная ..., которая не содержит допустимого имени команды. Таким образом, запуск `$ PATH` в качестве команды на самом деле не должен делать что-то особенно вменяемое. Gordon Davisson 6 лет назад 1

2 ответа на вопрос

2
davidgo

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

Когда вы запускаете echo $ PATH, вы показываете содержимое, если оно есть.

Когда вы запускаете $ PATH, вы пытаетесь запустить команду, включенную в переменную. Поскольку это список каталогов, это недопустимая команда, которая выдает ошибку.

2
Kamil Maciorowski

(Я предполагаю, что вы удалили свое имя пользователя между users/и /desktop. Теперь это выглядит как несколько пробелов, но на самом деле там нет места.)

Когда вы вызываете sole $PATH, первый пробел в нем отделяет то, что bashинтерпретируется как команда, от ее первого аргумента. No such file or directoryотносится к «команде».

Первый пробел находится в Program Files, поэтому «команда» заканчивается на Program. Сбой, потому что нет такого файла.