Чому налаштування псевдоніму у .profile не працює?


11

Я маю це як останній рядок у своєму .profile:

alias gl="cd /home/jrenner/glances/glances"

але навіть після перезавантаження я отримую команду не знайдено під час введення gl. Що відбувається? Я ввійшов як правильний користувач.


Де ти друкуєш gl? Термінал? GUI?
Thomas Ward

1
Ніхто ніколи не звертався до оригіналу, чому? питання. Я можу підтвердити, що псевдоніми, визначені в .profile, не працюють у жодному контексті, який я намагався: вхід у текстову консоль, графічні термінали чи будь-що інше, навіть незважаючи на те, що екологічні змінні з одного файлу працюють.
Даніель Малер

@DanielMahler, у тебе є причина чому?
Maged Saeed

Відповіді:


4

Я майже впевнений, що ідея lpanebr спрацює, але ось більш елегантне рішення. Виконайте цю команду псевдоніму. .bashrc Так я це і роблю, або деякі люди вважають за краще додати файл, призначений для псевдоніму. Зателефонуйте йому .aliasабо що завгодно і додайте .aliasдо свого.bashrc

Бажаю, щоб я міг зробити таке форматування, як @lpanelbr. Цікаво, чи є вікі?


1
Що стосується форматування, askubuntu використовує розмітку. Будь ласка, перегляньте інформацію про askubuntu.com/editing-help .
saji89

1
Чому .bashrcробота .profileне працює? Крім того, будь-яка причина, чому ви вирішили назвати файл псевдонім, .alliasа не .alias?
Том

# 1 З того, що я розумію, .bashrc є специфічним для bash, а .profile - специфічним для командного рядка, який не є bash. # 2 Я не знаю, що ти маєш на увазі. Я можу заклинати врешті-решт. (відредаговано)
Джейсон

7

Існує дві пов'язані причини, через які псевдоніми не завжди працюють, коли їх розміщують у .profileфайлі. Перший полягає в тому, що .profile(або .bash_profile) файл запускається лише для оболонки входу. Якщо ви запускаєте bash у вікні термінала під X, ваш емулятор терміналу (наприклад, gnome-termanl), ймовірно, не працює bash як оболонка входу. [У більшості є можливість змінити це, якщо ви хочете, але за замовчуванням (для gnome-termal все одно) це не запускати його як оболонку для входу.]
Оболонка буде інтерактивною оболонкою і тому .bashrcбуде запущена.

Однак зазвичай bash запускається як оболонка входу назад під час запуску сеансу X. Отже, якщо в ньому є команди псевдоніму, .profileвони будуть виконані разом із встановленням змінних оточуючих середовищ, таких як PATH і т.д. На відміну від змінних середовища, псевдоніми не можна експортувати з одного примірника bash до нового, розпочатого ним. Тож псевдоніми не передаються новій оболонці.

Щоб побачити це, спробуйте цей експеримент:

export ROBERT=bob
alias james=jimmy
echo $ROBERT
alias james
bash               #start a new bash instance
echo $ROBERT
alias james
exit               #end the new bash instance and revert to the original one
echo $ROBERT
alias james

Зауважте, що .bashrcвін не запускається bash, коли він запускається як оболонка входу. Тож розміщення псевдонімів не завжди спрацює, якщо ви не отримаєте .bashrcсвоє .profile, що є звичайною практикою.


Перевірено: додавання source .bashrcв .bash_profileдозволеному безлічі псевдонімів в .bashrc до роботи.
Treefish Чжан

Схоже, це має бути правильна відповідь. Крім того, в Ubuntu просто додайте псевдоніми в ~/.bash_aliases. Це правильний спосіб зробити це. (детальну інформацію читайте у файлі .bashrc).
Еміліо М.

0

Якщо ви використовуєте bash ( echo $SHELL) як інтерпретатор оболонки, я вважаю, що це найкраще (або, можливо, єдиний спосіб), якщо ви визначаєте свою власну функцію CD.

Відредагуйте .bashrcфайл та додайте наступне в кінці:

# my custom functions:
function gl () {
   cd /home/jrenner/glances/glances/
}

Ви також можете розширити його так:

# my custom functions:
function cdw () {
   cd /home/jrenner/glances/glances/$1
   ls
}

і перейдіть безпосередньо до підкаталогу та перерахуйте його вміст.


1
Це може бути чудовою пропозицією, але це не відповідь, оскільки це не пояснює, чому aliasдиректива, розміщена у .profileфайлі, не відповідає.
Том


0

Правильний спосіб зробити це в Ubuntu - додати свій псевдонім до ~/.bash_aliases. Створіть файл, якщо він не існує.

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

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