Як я можу знайти декларацію про псевдонім?


37

Я намагаюся знайти aliasмісце декларування конкретного . Я шукав всі звичні місця, які знаю, щоб шукати псевдоніми:

  • ~ / .bashrc
  • ~ / .bash_profile
  • / тощо / bashrc
  • / тощо / профіль

Без везіння.

Я знаю, що це aliasтому, що коли я це роблю which COMMAND, я отримую:

alias COMMAND='/path/to/command'
    /path/to/command

Чи є спосіб знайти, який файл оголошує aliasєдине відоме aliasім’я?


3
Пов'язаний з ним питання про змінних оточення , а не псевдонімами. В основному, немає простого способу, оскільки псевдонім можна було встановити де завгодно. Спробуйте поставити так, set -xяк пропонується у верхній частині, і подивіться, чи це звужує це для вас.
jw013

1
Вам доведеться поставити set -xвгорі /etc/bash_profileабо /etc/bashrc. Чому б просто не бігти bash -i -xабо bash -l -x?
Мікель

Відповіді:


30

Я б шукав /etc/profile.d/образи alias.

Ви також можете зробити наступне, щоб знайти його:

grep -r '^alias COMMAND' /etc

Це буде рекурсивно grepчерез файли, які шукають рядок, що починається з alias COMMAND.

Якщо все інше не вдалося, покладіть це в кінці свого ~/.bashrc

unalias COMMAND

26

Можна спробувати кілька речей:

  1. використовувати, bash -vщоб побачити, які рядки читаються під час запуску оболонки
  2. використовувати, bash -xщоб побачити, які команди виконуються під час запуску оболонки
  3. запустити лише один файл запуску

баш -в

Цей -v параметр дозволяє bashнадрукувати кожен рядок з кожного прочитаного файлу сценарію під час його читання.

Почніть з запуску

bash -i -v >bash-i.out 2>&1

зачекайте 5-10 секунд, потім натисніть Ctrl+C.

Це дасть вам один файл, який називається bash-i.out, як і всі ваші файли запуску, об'єднані (або об'єднані) разом.

Потім використовуйте, lessщоб відкрити файл і шукати псевдонім за допомогою /aliasname.

Тепер порівняйте, де цей псевдонім з’являється стосовно інших рядків у файлі. Наприклад, у більшості систем /etc/bash.bashrcє коментар у верхній частині, який говорить /etc/bash.bashrcі ~/.bashrcвін теж має.

Якщо він знаходиться вгорі верхньої частини вашого ~/.bashrc, то, ймовірно, це файл запуску, /etcякий визначає псевдонім, інакше він знаходиться у вашому ~/.bashrcабо файлі, включеному через sourceабо .(команда крапка).

Якщо це не показує псевдонім, спробуйте

bash -l -v >bash-l.out 2>&1

Це говорить bash як оболонку входу, яка читає деякі різні файли запуску, наприклад, /etc/profileа ~/.bash_profileне /etc/bash.bashrcта ~/.bashrc.

bash -x

Якщо bash -vви не отримаєте однозначної відповіді, спробуйте запустити bash -x, який друкує команди, за допомогою яких працює оболонка, а не рядки, які читає ваша оболонка.

Метод в основному такий же, як вище, за винятком зміни -vна -x. (За потреби ви можете використовувати обидва разом.)

Запустити лише один файл запуску

bash -i --rcfile="$HOME/.bashrc"

і подивіться, чи є у вас псевдонім.

Спробуйте те ж саме із rcfileвстановленим параметром, /etc/bash.bashrcякщо він має вашу систему.

Потім спробуйте

bash -l --rcfile="$HOME/.bash_profile"

і зробити те ж саме з кожним файлом запуску bash, який має profileсвоє ім'я, наприклад, змінити $HOME/.bash_profileна /etc/profile.

Який би спосіб не з'явився псевдонім, повідомляє вам про файл, який слід почати шукати.


2

Можливо, ваш .xinitrc? Ви також повинні перевірити, чи є ваш .bashrcчи .bash_profileджерело будь-яких інших файлів у них. Наприклад, я зберігаю всі свої псевдоніми в окремому файлі, на який посилається ця команда:

[ -f ~/.bash_alias ] && source $HOME/.bash_alias

Деякі питання, які також можуть допомогти: Це для звичайного або root користувача? Яка команда? Який аромат Linux?


0

Я дотримуюся дуже поширеної практики введення моїх псевдонімів

~/.bash_aliases

а потім зателефонувавши з .bashrc з

[ -f ~/.bash_aliases ] && source $HOME/.bash_aliases

чи можу я здогадатися, що ви маєте на увазі .bash_aliases у своїй другій команді замість .bash_alias?
stagl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.