Когда я делаю путь экспорта с помощью терминала, какой файл он сохраняет? [dубликат]

Вы можете восстановить специфические параметры gnome с помощью следующих команд в терминале:

rm -rf .gnome .gnome2 .gconf .gconfd .metacity

Подробнее см. Как сбросить настройки Ubuntu / Gnome до значений по умолчанию без повторной установки | Linux FUD

Кроме того, вы можете проверить, нет ли разбитых зависимостей, используя:

sudo apt-get check

И затем вы можете устранить оставшиеся проблемы один за другим.

2
задан 14 April 2018 в 09:00

6 ответов

Когда вы export переменная, она нигде не добавляется ни в какой файл.

Эффект export, а не просто назначение переменной, - это передача переменной в среды всех дочерних процессов оболочки. Он ничего не делает; он не изменяет файлы конфигурации оболочки. После выхода оболочки и всех ее дочерних процессов экспортируемая переменная исчезнет! Когда вы открываете новую оболочку, которая не является потомком первого shell, эта оболочка не будет помнить вашу переменную.

На самом деле нет необходимости в export PATH, поскольку PATH уже является переменной окружения , Он уже экспортируется; он будет автоматически передаваться в среду дочерних процессов, а при его изменении дочерние процессы также наследуют изменение.

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

$ foo=bar; echo $foo             # set a variable   
bar                              # the shell knows it
$ printenv foo                   # but it's not in the environment...
$ export foo; printenv foo       # export the variable and check again
bar                              # there it is!
$ foo=new; printenv foo          # change the variable
new                              # the change is inherited
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
$ PATH=/usr/bin; printenv PATH   # printenv is in /usr/bin so keep that!
/usr/bin                         # the change was inherited

(Теперь мне нужно выйти из этой оболочки, чтобы вернуть мой PATH или source /etc/environment, потому что любая новая оболочка, которую я запускаю из этой оболочки, наследует эту переменную PATH, которую я испортил. .)

он нигде не добавлен нигде

PATH - это единственная переменная, насколько мне известно, которая по умолчанию установлена ​​в [ f9] на Ubuntu. Я рекомендую не редактировать /etc/environment, чтобы установить PATH, или если вы это сделаете, будьте осторожны, чтобы сделать резервную копию исходного файла, потому что у вас не будет другого способа восстановить исходный PATH (если вы не записали его где-нибудь или не удивительная память). Также имейте в виду, что над содержимым не будет никаких расширений, поэтому вы должны использовать полные пути, а не $PATH или $GOPATH или ~. Если вы напишете такие вещи, они будут буквально в PATH, и если ваш PATH будет буквально $PATH:~/workspace/me/go, вы не сможете запускать какие-либо команды (кроме встроенных в оболочку) без использования их полных путей. [!d8 ]

Я также не рекомендую устанавливать PATH в .bashrc, потому что каждая интерактивная оболочка Bash читает .bashrc, и довольно часто запускать новую оболочку из оболочки и т. д. Если вы ставите что-то вроде

PATH="$PATH:$HOME/foo"

в вашем .bashrc, вы обнаружите, что /home/user/foo добавляется к вашему PATH несколько раз; каждый раз, когда оболочка запускает оболочку, PATH снова расширяется. В конечном итоге это может замедлить работу, особенно если вы добавили много путей. Кроме того, только интерактивные оболочки Bash читают ~/.bashrc, поэтому, если вы используете оболочку, отличную от Bash, или запускаете скрипт, не являясь дочерним процессом интерактивной оболочки Bash, она не будет иметь эту переменную.

Вместо этого я рекомендую добавить строку к ~/.profile, чтобы расширить вашу PATH. Этот файл читается только командами входа в систему; обычно он читается только один раз, когда вы входите в свой сеанс, поэтому PATH будет добавляться только один раз, и все оболочки будут наследовать переменные окружения, установленные там, а не только интерактивные оболочки Bash. Обычно к этому файлу добавляются переменные среды. Таким образом, вы можете открыть ~/.profile в текстовом редакторе и добавить строки, которые говорят что-то вроде:

GOPATH="$HOME/workspace/me/go"
PATH="$PATH:$GOPATH/bin"

Это хорошая идея процитировать путь, как показано, в случае, если какая-либо из каталогов включает специальные (это также хорошая идея создать каталоги, у которых нет особых символов в их именах, но все происходит), и если вы его цитируете, вы не можете использовать ~ как ярлык для /home/user, потому что двойные кавычки (") подавляет расширение тильды, но вместо этого вы можете использовать $HOME, потому что расширение параметра все еще выполняется, а $HOME станет /home/user.

После редактирования сохраните файл и выйдите из него и запустите source ~/.profile, и ваш PATH всегда будет включать /home/user/workspace/me/go.

2
ответ дан 22 May 2018 в 11:27

Когда вы export переменная, она нигде не добавляется ни в какой файл.

Эффект export, а не просто назначение переменной, - это передача переменной в среды всех дочерних процессов оболочки. Он ничего не делает; он не изменяет файлы конфигурации оболочки. После выхода оболочки и всех ее дочерних процессов экспортируемая переменная исчезнет! Когда вы открываете новую оболочку, которая не является потомком первого shell, эта оболочка не будет помнить вашу переменную.

На самом деле нет необходимости в export PATH, поскольку PATH уже является переменной окружения , Он уже экспортируется; он будет автоматически передаваться в среду дочерних процессов, а при его изменении дочерние процессы также наследуют изменение.

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

$ foo=bar; echo $foo # set a variable bar # the shell knows it $ printenv foo # but it's not in the environment... $ export foo; printenv foo # export the variable and check again bar # there it is! $ foo=new; printenv foo # change the variable new # the change is inherited $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin $ PATH=/usr/bin; printenv PATH # printenv is in /usr/bin so keep that! /usr/bin # the change was inherited

(Теперь мне нужно выйти из этой оболочки, чтобы вернуть мой PATH или source /etc/environment, потому что любая новая оболочка, которую я запускаю из этой оболочки, наследует эту переменную PATH, которую я испортил. .)

он нигде не добавлен нигде

PATH - это единственная переменная, насколько мне известно, которая по умолчанию установлена ​​в /etc/environment на Ubuntu. Я рекомендую не редактировать /etc/environment, чтобы установить PATH, или если вы это сделаете, будьте осторожны, чтобы сделать резервную копию исходного файла, потому что у вас не будет другого способа восстановить исходный PATH (если вы не записали его где-нибудь или не удивительная память). Также имейте в виду, что над содержимым не будет никаких расширений, поэтому вы должны использовать полные пути, а не $PATH или $GOPATH или ~. Если вы напишете такие вещи, они будут буквально в PATH, и если ваш PATH будет буквально $PATH:~/workspace/me/go, вы не сможете запускать какие-либо команды (кроме встроенных в оболочку) без использования их полных путей.

Я также не рекомендую устанавливать PATH в .bashrc, потому что каждая интерактивная оболочка Bash читает .bashrc, и довольно часто запускать новую оболочку из оболочки и т. д. Если вы ставите что-то вроде

PATH="$PATH:$HOME/foo"

в вашем .bashrc, вы обнаружите, что /home/user/foo добавляется к вашему PATH несколько раз; каждый раз, когда оболочка запускает оболочку, PATH снова расширяется. В конечном итоге это может замедлить работу, особенно если вы добавили много путей. Кроме того, только интерактивные оболочки Bash читают ~/.bashrc, поэтому, если вы используете оболочку, отличную от Bash, или запускаете скрипт, не являясь дочерним процессом интерактивной оболочки Bash, она не будет иметь эту переменную.

Вместо этого я рекомендую добавить строку к ~/.profile, чтобы расширить вашу PATH. Этот файл читается только командами входа в систему; обычно он читается только один раз, когда вы входите в свой сеанс, поэтому PATH будет добавляться только один раз, и все оболочки будут наследовать переменные окружения, установленные там, а не только интерактивные оболочки Bash. Обычно к этому файлу добавляются переменные среды. Таким образом, вы можете открыть ~/.profile в текстовом редакторе и добавить строки, которые говорят что-то вроде:

GOPATH="$HOME/workspace/me/go" PATH="$PATH:$GOPATH/bin"

Это хорошая идея процитировать путь, как показано, в случае, если какая-либо из каталогов включает специальные (это также хорошая идея создать каталоги, у которых нет особых символов в их именах, но все происходит), и если вы его цитируете, вы не можете использовать ~ как ярлык для /home/user, потому что двойные кавычки (") подавляет расширение тильды, но вместо этого вы можете использовать $HOME, потому что расширение параметра все еще выполняется, а $HOME станет /home/user.

После редактирования сохраните файл и выйдите из него и запустите source ~/.profile, и ваш PATH всегда будет включать /home/user/workspace/me/go.

2
ответ дан 17 July 2018 в 16:54

Когда вы export переменная, она нигде не добавляется ни в какой файл.

Эффект export, а не просто назначение переменной, - это передача переменной в среды всех дочерних процессов оболочки. Он ничего не делает; он не изменяет файлы конфигурации оболочки. После выхода оболочки и всех ее дочерних процессов экспортируемая переменная исчезнет! Когда вы открываете новую оболочку, которая не является потомком первого shell, эта оболочка не будет помнить вашу переменную.

На самом деле нет необходимости в export PATH, поскольку PATH уже является переменной окружения , Он уже экспортируется; он будет автоматически передаваться в среду дочерних процессов, а при его изменении дочерние процессы также наследуют изменение.

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

$ foo=bar; echo $foo # set a variable bar # the shell knows it $ printenv foo # but it's not in the environment... $ export foo; printenv foo # export the variable and check again bar # there it is! $ foo=new; printenv foo # change the variable new # the change is inherited $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin $ PATH=/usr/bin; printenv PATH # printenv is in /usr/bin so keep that! /usr/bin # the change was inherited

(Теперь мне нужно выйти из этой оболочки, чтобы вернуть мой PATH или source /etc/environment, потому что любая новая оболочка, которую я запускаю из этой оболочки, наследует эту переменную PATH, которую я испортил. .)

он нигде не добавлен нигде

PATH - это единственная переменная, насколько мне известно, которая по умолчанию установлена ​​в /etc/environment на Ubuntu. Я рекомендую не редактировать /etc/environment, чтобы установить PATH, или если вы это сделаете, будьте осторожны, чтобы сделать резервную копию исходного файла, потому что у вас не будет другого способа восстановить исходный PATH (если вы не записали его где-нибудь или не удивительная память). Также имейте в виду, что над содержимым не будет никаких расширений, поэтому вы должны использовать полные пути, а не $PATH или $GOPATH или ~. Если вы напишете такие вещи, они будут буквально в PATH, и если ваш PATH будет буквально $PATH:~/workspace/me/go, вы не сможете запускать какие-либо команды (кроме встроенных в оболочку) без использования их полных путей.

Я также не рекомендую устанавливать PATH в .bashrc, потому что каждая интерактивная оболочка Bash читает .bashrc, и довольно часто запускать новую оболочку из оболочки и т. д. Если вы ставите что-то вроде

PATH="$PATH:$HOME/foo"

в вашем .bashrc, вы обнаружите, что /home/user/foo добавляется к вашему PATH несколько раз; каждый раз, когда оболочка запускает оболочку, PATH снова расширяется. В конечном итоге это может замедлить работу, особенно если вы добавили много путей. Кроме того, только интерактивные оболочки Bash читают ~/.bashrc, поэтому, если вы используете оболочку, отличную от Bash, или запускаете скрипт, не являясь дочерним процессом интерактивной оболочки Bash, она не будет иметь эту переменную.

Вместо этого я рекомендую добавить строку к ~/.profile, чтобы расширить вашу PATH. Этот файл читается только командами входа в систему; обычно он читается только один раз, когда вы входите в свой сеанс, поэтому PATH будет добавляться только один раз, и все оболочки будут наследовать переменные окружения, установленные там, а не только интерактивные оболочки Bash. Обычно к этому файлу добавляются переменные среды. Таким образом, вы можете открыть ~/.profile в текстовом редакторе и добавить строки, которые говорят что-то вроде:

GOPATH="$HOME/workspace/me/go" PATH="$PATH:$GOPATH/bin"

Это хорошая идея процитировать путь, как показано, в случае, если какая-либо из каталогов включает специальные (это также хорошая идея создать каталоги, у которых нет особых символов в их именах, но все происходит), и если вы его цитируете, вы не можете использовать ~ как ярлык для /home/user, потому что двойные кавычки (") подавляет расширение тильды, но вместо этого вы можете использовать $HOME, потому что расширение параметра все еще выполняется, а $HOME станет /home/user.

После редактирования сохраните файл и выйдите из него и запустите source ~/.profile, и ваш PATH всегда будет включать /home/user/workspace/me/go.

2
ответ дан 23 July 2018 в 17:45

Shell custiomizations обычно редактируются в $HOME/.bashrc, который является sourced каждой запущенной вами оболочкой. Прочитайте man bash.

BTW. У вас должно быть определение GOPATH

 GOPATH=~/workspace/me/go  

Прежде чем использовать GOPATH

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Кроме того, где определение GOROOT?

0
ответ дан 22 May 2018 в 11:27
  • 1
    Просто мой неполный пример, вот и все, у меня нет проблем с ходом. Мне просто интересно, спасли ли это все! – Kaigo 13 April 2018 в 21:14
  • 2
    Чтобы быть ясным, просто запуск export с вашего терминала bash не спасет вещи в любом месте, все это означает, что эти изменения будут применены для вашего текущего сеанса и будут отменены, когда вы закроете окно терминала. Вы должны фактически отредактировать $HOME/.bashrc и добавить эти команды там, чтобы они оставались. – Harry 13 April 2018 в 23:53

Shell custiomizations обычно редактируются в $HOME/.bashrc, который является sourced каждой запущенной вами оболочкой. Прочитайте man bash.

BTW. У вас должно быть определение GOPATH

GOPATH=~/workspace/me/go

Прежде чем использовать GOPATH

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Кроме того, где определение GOROOT?

0
ответ дан 17 July 2018 в 16:54

Shell custiomizations обычно редактируются в $HOME/.bashrc, который является sourced каждой запущенной вами оболочкой. Прочитайте man bash.

BTW. У вас должно быть определение GOPATH

GOPATH=~/workspace/me/go

Прежде чем использовать GOPATH

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Кроме того, где определение GOROOT?

0
ответ дан 23 July 2018 в 17:45
  • 1
    Просто мой неполный пример, вот и все, у меня нет проблем с ходом. Мне просто интересно, спасли ли это все! – Kaigo 13 April 2018 в 21:14
  • 2
    Чтобы быть ясным, просто запуск export с вашего терминала bash не спасет вещи в любом месте, все это означает, что эти изменения будут применены для вашего текущего сеанса и будут отменены, когда вы закроете окно терминала. Вы должны фактически отредактировать $HOME/.bashrc и добавить эти команды там, чтобы они оставались. – Harry 13 April 2018 в 23:53

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

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