Псевдонимы: разница между .bash_rc, .bash_aliases и / usr / local / bin

9

Играя с Терминалом, я заметил, что существует много способов создания постоянных псевдонимов.

Я новичок в Linux, и из того, что я знаю, делаю:

  1. sudo ln -s /path/to/executable /usr/local/bin/desired_alias
  2. добавление desired_alias = '/path/to/executable'к~/.bashrc
  3. раскомментируя эти строки в ~/.bashrc:

    if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
    fi
    

    и положить desired_alias = '/path/to/executable'в~/.bash_aliases

все имеют одинаковый эффект.

В чем разница между первым и вторым методами?

Strae
источник

Ответы:

10

С первым методом вы не создаете псевдоним, вы создаете символическую ссылку. Симлинки - это короткие символические ссылки:

Символические ссылки - это файлы, которые действуют как указатели на другие файлы. [...] Символическая ссылка - это специальный тип файла, содержимое которого представляет собой строку, которая является путем к другому файлу, файлу, на который ссылается ссылка. Другими словами, символическая ссылка является указателем на другое имя, а не на базовый объект.

Узнайте больше о символических ссылках здесь и здесь .

Фактически, только со вторым способом вы создаете псевдоним.

Псевдонимы позволяют заменить строку словом, если оно используется в качестве первого слова простой команды. Оболочка поддерживает список псевдонимов, которые могут быть установлены и сняты с помощью встроенных команд псевдонимов и unalias (см. КОМАНДЫ ПОСТРОЕНИЯ SHELL ниже). Первое слово каждой простой команды, если оно не заключено в кавычки, проверяется на наличие псевдонима. Если это так, это слово заменяется текстом псевдонима.

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

Для bash это /etc/bash.bashrc(для всей системы) и ~/.bashrc. Эти файлы интерпретируются, когда оболочка запускается в интерактивном режиме (как при использовании Terminal). Я не буду упоминать файлы профиля, потому что они служат другой цели.

Итак, вы хотите добавить свои псевдонимы, чтобы ~/.bashrcони были доступны в каждой интерактивной оболочке.

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

. ~/.bash_aliasesИсточник средств (нагрузки) _~/.bash_aliases_в контексте текущего запущенной командной оболочки.

Ли Ло
источник
@lilo ты побил меня на уроке! +1
myusuf3
@ GC Я бью мешок, так что сойти с ума :)
Ли Ло
@lilo хахахаха :)
myusuf3
1
Вы можете думать, что это работает так же, но это не так. Пожалуйста, ознакомьтесь с материалами по символическим ссылкам, которые я указал в своем ответе. Симлинк и псевдонимы служат разным целям и были созданы с разными целями. Чтобы дать вам пример, почему символические ссылки не работают как псевдонимы, попробуйте это - определите псевдоним как: alias px = "ps axu". Теперь попробуйте сделать то же самое с символическими ссылками.
Ли Ло
1
@Li Lo: я понял разницу между synlink и / usr / local / bin, но мой вопрос (возможно, немного не по теме общего вопроса): для чего используется exaclty / usr / local / bin?
Strae