Корректировка пути в файле ~ / .profile

В ~/.profile есть строка, которая

PATH="$HOME/bin:$HOME/.local/bin:$PATH"i

Я не уверен в последнем i.

Должен ли я удалить его? Разве это не синтаксическая ошибка ??
10
задан 7 December 2017 в 13:56

6 ответов

Да, это синтаксическая ошибка, фактический .profile должен выглядеть так, если вы не изменили ситуацию (это версия 17.10, см. примечания ниже):

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Это может выглядеть другой в более старых версиях Ubuntu, где проверка наличия каталога bin пользователя не была включена в .profile.

Итак, чтобы добавить, как вы просили в своем комментарии, просто поместите это в конец вашего файла профиля:

[ f2]

Если вы когда-либо испортили свой профиль, есть копия, в которой вы можете получить новую в /etc/skel/.

4
ответ дан 22 May 2018 в 15:35
  • 1
    У меня есть одна дополнительная строка "export PATH = $ PATH: /home/jeremy/swift-4.0-DEVELOPMENT-SNAPSHOT-2017-06-29-a-ubuntu16.04/usr/bin" потому что я его установил. Это нормально ??? – Smile 7 December 2017 в 13:34
  • 2
    Эта строка в порядке, я включил ее в свой пример, чтобы показать, где ее разместить. – Videonauth 7 December 2017 в 13:36
  • 3
    Обратите внимание, что /etc/skel/.profile в 16.04 выглядит иначе, без проверки, существует ли "$HOME/bin". Даже если это был лучший вариант (ИМО), он, похоже, был изменен еще в 17.10 по причине или по ошибке. – Gunnar Hjalmarsson 7 December 2017 в 15:41
  • 4
    @GunnarHjalmarsson заметит, что в моем посте и да, это skel / .profile с 17.10, на котором я работаю. – Videonauth 7 December 2017 в 15:53

Я думаю, что здесь неясно, что означает следующее выражение:

PATH="$HOME/bin:$HOME/.local/bin:$PATH"i

Первая часть PATH= означает, что мы назначаем новое значение переменной (environment) $PATH.

Вторая часть - это новое значение этой переменной. В текущем случае переменная $HOME будет расширена с ее текущим значением, и к этому значению будет добавлена ​​строка /bin:. То же самое относится к следующей части строки $HOME/.local/bin:. Наконец, текущее (предыдущее) значение переменной $PATH будет расширено и добавлено. Двоеточие : играет роль разделителя в выражении PATH.

Цель состоит в том, чтобы в конечном итоге написать: PATH=<some additional paths>+<the the current value of $PATH>. Мы помещаем эти дополнительные пути перед строкой, потому что мы хотим, чтобы оболочка сначала искала исполняемые файлы в этих местах и ​​только затем в системной области.

Символ i не нужен. Он будет добавлен к новому значению $PATH и сделает беспорядок, как объясняет @Zanna в своем ответе.

3
ответ дан 22 May 2018 в 15:35

Да, это синтаксическая ошибка, фактический .profile должен выглядеть так, если вы не изменили ситуацию (это версия 17.10, см. примечания ниже):

# ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. # see /usr/share/doc/bash/examples/startup-files for examples. # the files are located in the bash-doc package. # the default umask is set in /etc/profile; for setting the umask # for ssh logins, install and configure the libpam-umask package. #umask 022 # if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi

Это может выглядеть другой в более старых версиях Ubuntu, где проверка наличия каталога bin пользователя не была включена в .profile.

Итак, чтобы добавить, как вы просили в своем комментарии, просто поместите это в конец вашего файла профиля:

# Manual addition for swift development snapshot export PATH="$PATH:/home/jeremy/swift-4.0-DEVELOPMENT-SNAPSHOT-2017-06-29-a-ubuntu16.04/usr/bin"

Если вы когда-либо испортили свой профиль, есть копия, в которой вы можете получить новую в /etc/skel/.

4
ответ дан 18 July 2018 в 01:40

Я думаю, что здесь неясно, что означает следующее выражение:

PATH="$HOME/bin:$HOME/.local/bin:$PATH"i

Первая часть PATH= означает, что мы назначаем новое значение переменной (environment) $PATH.

Вторая часть - это новое значение этой переменной. В текущем случае переменная $HOME будет расширена с ее текущим значением, и к этому значению будет добавлена ​​строка /bin:. То же самое относится к следующей части строки $HOME/.local/bin:. Наконец, текущее (предыдущее) значение переменной $PATH будет расширено и добавлено. Двоеточие : играет роль разделителя в выражении PATH.

Цель состоит в том, чтобы в конечном итоге написать: PATH=<some additional paths>+<the the current value of $PATH>. Мы помещаем эти дополнительные пути перед строкой, потому что мы хотим, чтобы оболочка сначала искала исполняемые файлы в этих местах и ​​только затем в системной области.

Символ i не нужен. Он будет добавлен к новому значению $PATH и сделает беспорядок, как объясняет @Zanna в своем ответе.

3
ответ дан 18 July 2018 в 01:40

Да, это синтаксическая ошибка, фактический .profile должен выглядеть так, если вы не изменили ситуацию (это версия 17.10, см. примечания ниже):

# ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. # see /usr/share/doc/bash/examples/startup-files for examples. # the files are located in the bash-doc package. # the default umask is set in /etc/profile; for setting the umask # for ssh logins, install and configure the libpam-umask package. #umask 022 # if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi

Это может выглядеть другой в более старых версиях Ubuntu, где проверка наличия каталога bin пользователя не была включена в .profile.

Итак, чтобы добавить, как вы просили в своем комментарии, просто поместите это в конец вашего файла профиля:

# Manual addition for swift development snapshot export PATH="$PATH:/home/jeremy/swift-4.0-DEVELOPMENT-SNAPSHOT-2017-06-29-a-ubuntu16.04/usr/bin"

Если вы когда-либо испортили свой профиль, есть копия, в которой вы можете получить новую в /etc/skel/.

4
ответ дан 24 July 2018 в 17:26
  • 1
    У меня есть одна дополнительная строка "export PATH = $ PATH: /home/jeremy/swift-4.0-DEVELOPMENT-SNAPSHOT-2017-06-29-a-ubuntu16.04/usr/bin" потому что я его установил. Это нормально ??? – Smile 7 December 2017 в 13:34
  • 2
    Эта строка в порядке, я включил ее в свой пример, чтобы показать, где ее разместить. – Videonauth 7 December 2017 в 13:36
  • 3
    Обратите внимание, что /etc/skel/.profile в 16.04 выглядит иначе, без проверки, существует ли "$HOME/bin". Даже если это был лучший вариант (ИМО), он, похоже, был изменен еще в 17.10 по причине или по ошибке. – Gunnar Hjalmarsson 7 December 2017 в 15:41
  • 4
    @GunnarHjalmarsson заметит, что в моем посте и да, это skel / .profile с 17.10, на котором я работаю. – Videonauth 7 December 2017 в 15:53

Я думаю, что здесь неясно, что означает следующее выражение:

PATH="$HOME/bin:$HOME/.local/bin:$PATH"i

Первая часть PATH= означает, что мы назначаем новое значение переменной (environment) $PATH.

Вторая часть - это новое значение этой переменной. В текущем случае переменная $HOME будет расширена с ее текущим значением, и к этому значению будет добавлена ​​строка /bin:. То же самое относится к следующей части строки $HOME/.local/bin:. Наконец, текущее (предыдущее) значение переменной $PATH будет расширено и добавлено. Двоеточие : играет роль разделителя в выражении PATH.

Цель состоит в том, чтобы в конечном итоге написать: PATH=<some additional paths>+<the the current value of $PATH>. Мы помещаем эти дополнительные пути перед строкой, потому что мы хотим, чтобы оболочка сначала искала исполняемые файлы в этих местах и ​​только затем в системной области.

Символ i не нужен. Он будет добавлен к новому значению $PATH и сделает беспорядок, как объясняет @Zanna в своем ответе.

3
ответ дан 24 July 2018 в 17:26

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

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