2015-09-15 2 views
0

Я установил Leiningen на фетровой шляпой, я следовал инструкции:Зачем мне sudo использовать leiningen (установленный в/bin) в Linux?

  1. скачать скрипт
  2. Вставить скрипт (через командную строку) в ~/бен (PATH)
  3. Выполните сценарий
  4. Run lein (я должен был сделать это с sudo), чтобы самостоятельно установить

но каждый раз, когда я хочу запустить команду «lein», я должен сделать это с помощью «sudo».

Как я могу это исправить? или что я могу сделать, чтобы исправить это?

Примечание: Я установил leiningen в/bin, но когда i cd ~/bin в качестве руководства по установке сказал, что я получаю и ошибка о папке (не существует).

+1

Если это на ** '/ bin' **, это папка принадлежит корню и это сделало бы (некоторые) смысл, что вы должны иметь повышенные привилегии для его запуска. Если он находится в ** '~/bin' **, это должно быть в вашей собственной домашней папке. Что говорит вам «какой лейн»? – Makoto

+0

@Makoto: Я бы предложил «тип lein», а не «lein»; последний является внешней командой и не знает псевдонимов оболочки, функций и т. п., тогда как первый является встроенным и имеет видимость во всем, что рассматривается в процессе выполнения оболочки (включая кэширование предыдущих запросов PATH, что делает его более точным даже для того, что известно как внешняя команда). –

ответ

6

Вы установили его в /bin и запустили его с помощью sudo для первоначальной установки банок с lein, что означает, что они принадлежат (и, возможно, только читабельны) от root. Вместо этого вы должны установить скрипт на ~/bin. Вы можете исправить это следующим образом:

sudo rm /bin/lein 
sudo rm ~/.lein 
mkdir ~/bin 
cd ~/bin 
wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein 
export PATH="${HOME}/bin:${PATH}" 
lein 

Вы должны также добавить ${HOME}/bin к вашему $PATH. Если вы используете Баш, добавьте в ~/.bashrc:

export PATH="${HOME}/bin:${PATH}" 

Вы можете сделать это с помощью echo:

echo 'export PATH="${HOME}/bin:${PATH}"' >> ~/.bashrc 
+0

Как я могу добавить последнюю строку? (Я новичок Linux, извините) –

+0

В идеале изменения в PATH должны идти в '.bash_profile', а не' .bashrc'. В '.bashrc', они будут повторно применены для каждой новой оболочки даже после того, как будут применены в оболочке входа, которая является ее родительской, поэтому вы получите« PATH = $ HOME/bin: $ HOME/bin: $ HOME/bin: ... 'после запуска нескольких вложенных оболочек. –

+0

... если вы собираетесь хранить его в '.bashrc', то, по крайней мере, добавьте некоторые меры безопасности; например: '[[$ PATH = ~ (^ | :)" $ HOME/bin "(: | $)]] || PATH = $ HOME/bin: $ PATH' –

Смежные вопросы