Что такое «$ PATH» и «~ / bin»? Как я могу получить личные скрипты?

28

Что такое $PATH ?

Как я могу получить команды / программы, которые доступны только мне? Я видел этот путь ~/bin , упомянутый ранее, но для чего он используется и как его использовать?

    
задан Braiam 27.10.2010 в 22:58
источник

2 ответа

25

$ PATH - это переменная среды, используемая для команд поиска. ~ Это ваш домашний каталог, поэтому ~ / bin будет / home / user / bin; это обычный каталог.

Когда вы запускаете «ls» в оболочке, например, вы фактически запускаете программу / bin / ls; точное местоположение может отличаться в зависимости от конфигурации вашей системы. Это происходит потому, что / bin находится в вашем $ PATH.

Чтобы увидеть путь и найти, где находится какая-либо конкретная команда:

$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls     # searches $PATH for an executable named "ls"
/bin/ls
$ ls           # runs /bin/ls
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
$ /bin/ls      # can also run directly
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...

Чтобы иметь свой собственный собственный каталог bin, вам нужно только добавить его в путь. Сделайте это, отредактировав файл ~ / .profile (скрытый файл), чтобы включить приведенные ниже строки. Если строки прокомментированы, вам нужно только расколоть их; если они уже есть, вы все настроены!

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

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

Давайте проверим это:

$ ln -s $(which ls) ~/bin/my-ls   # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls          # lookup through $PATH
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
$ ~/bin/my-ls    # doesn't use $PATH to lookup
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
    
ответ дан Roger Pate 27.10.2010 в 22:58
17

Относительно ~/bin и команд / программ, доступных только вашему пользователю

Недавние версии Ubuntu включают каталог ~/bin в вашем $PATH , но только если существует каталог ~/bin .

Если он не существует:

  1. Убедитесь, что ваш ~/.profile содержит следующую строфу (по умолчанию используется ~/.profile ):

    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi
    
  2. Создайте каталог ~/bin :

    mkdir -p ~/bin
    
  3. Перезагрузите компьютер или запустите команду bash, чтобы перечитать ~/.profile :

    exec -l bash
    
ответ дан Danilo Piazzalunga 25.01.2013 в 11:09