Есть строка, в ~/.profile
которой есть
PATH="$HOME/bin:$HOME/.local/bin:$PATH"i
Я не уверен насчет последнего i
.
- Должен ли я удалить это ??
- Разве это не ошибка синтаксиса?
bash
environment-variables
Улыбка
источник
источник
$PATH
переменной среды, но они не являются дубликатами вообще. В лучшем случае они связаны между собой. Этот вопрос - проблема, в~/.profile
которой просто оказывается дополнительный символ в строке, где назначена$PATH
среда.PATH=
строка в,~/.profile
чтобы быть действительной - что является реальным вопросом здесь.Ответы:
Нет, это не синтаксическая ошибка; это просто письмо, которое добавляется после раскрытия
$PATH
, потому что оболочка удаляет кавычки ...Таким образом, помимо добавления локальных каталогов, он фактически удалил существующие
/snap/bin
из моего PATH и добавил несуществующие/snap/bini
.Вы можете удалить,
i
чтобы восстановить ваш путь.Чтобы увидеть изменения, вам нужно выйти из системы и снова войти в нее или запустить
source ~/.profile
в любой используемой вами оболочке (или запустить оболочкуbash -l
), поскольку.profile
она читается только оболочками входа в систему .Если вы не сделали это изменение
.profile
самостоятельно, вы можете восстановить файл по умолчанию, запустивЭто переименовывает старый
.profile
.profile.old
(вы также можете удалить файл, если хотите) и заменяет его версией по умолчанию для вашей системы/etc/skel
.источник
Я думаю, что здесь неясно, что означает следующее выражение:
Первая часть
PATH=
означает, что мы присваиваем новое значение переменной (environment)$PATH
.Вторая часть - это новое значение этой переменной. В текущем случае переменная
$HOME
будет расширена с ее текущим значением, и к этому значению будет добавлена строка/bin:
. То же самое относится и к следующей части строки$HOME/.local/bin:
. Наконец, текущее (предыдущее) значение$PATH
переменной будет расширено и добавлено. Двоеточие:
играет роль разделителя вPATH
выражении.Цель состоит в том, чтобы в конечном счете , пишет:
PATH=<some additional paths>+<the the current value of $PATH>
. Мы помещаем эти дополнительные пути перед строкой, потому что мы хотим, чтобы оболочка искала исполняемые файлы сначала в этих местах, а затем в масштабе всей системы.Персонаж
i
не нужен. Он будет добавлен к новому значению$PATH
и создаст беспорядок, как объясняет @Zanna в своем ответе .источник
Да, это синтаксическая ошибка, фактическая
.profile
должна выглядеть следующим образом, если вы не изменили ситуацию (это версия 17.10, см. Примечания под ней):Это может выглядеть иначе в более старых версиях Ubuntu, где проверка наличия
bin
каталога users не была включена в.profile
. Самый простой способ проверить, как это должно выглядеть - это посмотреть/etc/skel/.profile
.Таким образом, чтобы добавить, как вы просили в своем комментарии, просто поместите это в конец вашего профиля:
Если вы когда-нибудь испортили свой профиль полностью, есть копия, где вы можете получить новый
/etc/skel/
.источник
/etc/skel/.profile
в 16.04 выглядит иначе, без проверки,"$HOME/bin"
существует ли . Даже если бы это был лучший вариант (IMO), он, кажется, был изменен в 17.10 - по причине или по ошибке.