В моем домашнем каталоге нет файла bashrc


14

Вот что я отметил в своей лекции:

  • Найти файл .bashrcв вашем домашнем каталоге
  • делать vi .bashrc
  • Когда вы помещаете папку приложения куда-нибудь, убедитесь, что ее адрес находится в переменной пути.

Проблема в том, что у меня нет .bashrcфайла в моем домашнем каталоге. В .bash_historyмоем доме только файл.

Если я иду в корень, там есть etc/bash.bashrcфайл, но я думаю, что он будет вносить изменения для всех пользователей, а не только для меня. Я хочу добавить этот путь только для себя. Это не должно влиять на других. Кроме того, $PATHв этом файле bashrc нет никаких переменных, поэтому я еще больше запутался.

Ответы:


20

Не забудьте, что это скрытый файл в вашем домашнем каталоге (вы не будете первым, кто сделает это, ls -lи подумает, что его там нет).

Делайте следующее ...

ls -la ~/ | more

Там должно быть .bashrcна первой странице. Если не просто создать его с

vi ~/.bashrc

И просто напишите следующую строку в него.

PATH=$PATH:~/bin

ИЛИ В большинстве дистрибутивов хранится стандартный .bashrcфайл. /etc/skel/Вы можете скопировать его в домашний каталог.

$cp /etc/skel/.bashrc ~

Хорошо, я понял это сейчас. На других компьютерах я могу набрать lego, и программа запускается. В моей системе папка lego находится в моей ~/data/user1/binпапке. Я добавил этот путь в файл .bashrc. Теперь, что мне нужно сделать, чтобы при вводе lego программа запускалась? Должен ли я создать псевдоним? Если да, то как? alias lego='<What do i put here???>'

@detraveller Вы добавили ~/data/user1/binпеременную среды PATH в .bashrcфайл? (добавьте эту строку:) export PATH=$PATH:~/data/user1/bin- если это так, вы должны просто набрать текст legoв терминале, и программа должна запуститься.
Acid

Я только добавил PATH=$PATH:~/data/user1/bin. Вы не упомянули экспорт, поэтому я не поместил его туда. Я попробую еще раз завтра, когда пойду в универ.
detraveller

Но мне было интересно, как я могу сказать Bash, что legoэто слово, которое запускает программное обеспечение?
detraveller

11

В большинстве дистрибутивов хранится стандартный .bashrcфайл, который /etc/skel/вы можете просто скопировать в домашний каталог. В противном случае вы можете просто создать новый пустой .bashrcфайл в вашем домашнем каталоге.


4

Создайте свой собственный файл запуска для интерактивных оболочек

О загрузочных файлах Bash

Из раздела ПРИЗВАНИЕ man 1 bashговорит:

Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, bash читает и выполняет команды из /etc/bash.bashrc и ~ / .bashrc, если эти файлы существуют.

Обратите внимание, что эти файлы запуска не являются обязательными ; Баш не требует их. Bash также различает логин и интерактивные оболочки. Интерактивная оболочка определяется следующим образом:

Интерактивная оболочка запускается без аргументов без параметров и без опции -c, чьи стандартные входные данные и ошибки связаны с терминалами (как определено isatty (3)), или запускаются с параметром -i.

Многие дистрибутивы используют один тип файла запуска из другого, но некоторые этого не делают, поэтому эту проблему может быть трудно решить канонически. Вам нужно проверить все ваши файлы запуска, чтобы увидеть, как и когда вы ~/.bashrcбудете вызываться в вашей системе.

Создание вашего пользовательского загрузочного файла интерактивной оболочки

Если вам просто не хватает пользовательского ~/.bashrcфайла, просто создайте его. Это будет вызываться Bash для оболочек без входа в систему (например, оболочки, запущенные без --loginфлага), или всякий раз, когда вы заставляете оболочку быть интерактивной, вызывая ее с -iфлагом.


0

Если у вас нет .bashrc, вы можете просто создать его и добавить строки, которые вы хотите, например:

PATH=$PATH:~/bin

добавить свой каталог bin пользователя в конец пути.

Но вы должны быть осторожны, если есть другие файлы запуска. Правила относительно того, какие файлы используются, довольно сложны, но они подробно описаны на bashстранице руководства . Войдите man bashв командную строку и ищите INVOCATION.


0

Короткие ответы:

  1. find ~ -maxdepth 1 -name '.bashrc'
  2. vi ~/.bashrc
  3. echo $PATH | grep ~/MyNewCoolProgramFolder

Подробный:
я беру более близкое буквальное толкование.

  1. «Найдите файл .bashrc в вашем домашнем каталоге».
    Так как команда существуетfind, возможно, коварный редактор посоветует вам использовать ее:

    find ~ -maxdepth 1 -name '.bashrc'

    Поиск в домашнем каталоге ~, спуск только одного уровня (без subdir -maxdepth 1). По всем вариантам пишите man find.
    Строка ниже будет делать минимальную работу

    ls ~/.bashrc   

    Примечание: в случае, если ~/.bashrcне существует, вы можете создать его с помощью простого echo >> ~/.bashrc.

    >>Создаст файл , если не существует. Если ~/.bashrcвместо этого существует, он будет добавлять только безвредный вывод пустого echo, избегая непреднамеренного удаления такого важного файла, который, кстати, трудно восстановить без резервной копии.

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

    if [ ! -f ~/.bashrc ] ; 
      then
         cp -i /etc/skel/.bashrc ~/.bashrc ;
      else ls -la ~/.bashrc; 
    fi || echo " # Auto Generated " >> ~/.bashrc
  2. «Делай vi .bashrc»
    Теперь вы можете сделатьvi ~/.bashrc, ловушка здесь, что вам нужно нажать:иqвыйти!

  3. Папка приложения и$PATH
    когда вы создаете папку приложения, например~/MyNewCoolProgramFolder, строка ниже будет проверять только, находится ли она в$PATH:

    echo $PATH | grep ~/MyNewCoolProgramFolder

    Вам не нужно добавлять, если уже есть. При необходимости вы можете добавить в $PATHс

    PATH=$PATH:~/MyNewCoolProgramFolder

    и добавить эту строку, ~/.bashrcесли вы хотите сделать его постоянным.

  4. «4?!? Как 4, если было только 3 балла?» - Временные решения.
    Есть несколько обходных путей для последнего; давайте предположим, что исполняемый файл с именемCoolDetravellerсуществует только в вашей новой папке приложения:

    (а) Вы можете попытаться выполнить это. Просто он не запустится, если его нет в $PATH.

    CoolDetraveller: команда не найдена

    (б) Вы можете попробовать его автозаполнение . Начните писать CoolDetravelleи нажмите Tab. Если он есть, $PATHон будет автоматически завершен (всегда, если автоматическое завершение включено).

    (c) Вы можете спросить, whichбудет ли использоваться команда оболочки bash , если вы напишете команду CoolDetraveller.

        which CoolDetraveller

    Примечание: Если в вашем пути приложения есть один или несколько пробела, whichможет быть не в состоянии найти CoolDetraveller, хотя (здесь я снова чту мой ник) на завершение авто в CoolDetravellerкачестве действительного параметра whichкоманды будет работать!

    Ad nauseam : Вы не можете спросить,whereis CoolDetravellerпотому чтоwhereis

    имеет жестко заданный путь, поэтому не всегда может найти то, что вы ищете

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.