10

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

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

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

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

5 ответов5

11

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

11

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

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

ls -la ~/ | more

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

vi ~/.bashrc

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

PATH=$PATH:~/bin

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

$cp /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. "Do 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) Вы можете спросить командную оболочку bash, which команда будет использоваться, если вы напишете команду CoolDetraveller .

        which CoolDetraveller
    

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .