LINUX.ORG.RU

Почему alias из .profile не работает в xterm?

 ,


0

1

Добавляю alias в .profile, перезагружаюсь, захожу в иксы, запускаю gnome-terminal (или xterm), алиаса нет. wtf?

Если логиниться в «настояющую» консольку по ctrl+alt+f1, алиас есть.

Переменные, которые прописаны рядом с алиасом в .profile, все всегда на месте.

П.С. я в курсе, что алиас можно добавить в .bashrc или .bash_aliases, вопрос заключается в том, что за фигня и какого фига я могу прописывать в .profile переменные, но не могу алиасы?

П.С.2 Дефолтная убунта 16.04

★★★★★

Последнее исправление: bender (всего исправлений: 3)

что за фигня и какого фига я могу прописывать в .profile переменные, но не могу алиасы?

А ты точно ничего не путаешь?
Т.е. переменные всё-таки работают?

Так-то .profile при логине в X-ы, не выполняется.
Добавь для проверки альясы в .xsessionrc.

uCore
()

.profile запускается при логине. В иксах ты уже залогинен.
Такие вещи нужно прописывать в bashrc. Не понимаю зачем ты упорствуешь.

Kroz ★★★★★
()
Ответ на: комментарий от uCore

А ты точно ничего не путаешь?

Я думаю, что нет. Он же описал совершеннейшую норму. Все именно так и должно быть.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)

Тов. Kroz не договорил мысль, о которой вы, вероятно, не в курсе. Переменные, которые вы *явным образом экспортировали* (ведь правда?) таки наследуются, как и должны, а алиасы вы не экспортировали и сделать этого не можете.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Подумал, вспомнил, дошло (:. При запуске нового процесса передаются только экспортированные переменные окружения, алиасы как-бы и не должны.

uCore
()
Ответ на: комментарий от Zmicier

*явным образом экспортировали* (ведь правда?)

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

а алиасы вы не экспортировали и сделать этого не можете.

Да, проверил, если сделать в баше алиас из запустить после него в этом же баше еще один баш, алиас не сохранится, сохранится только экспортированная переменная.

Короче, понятно. В .bashrc я не хотел писать, т.к. там сходу куча какого-то дефолтного кода. Вариант с .profile нравился тем, что для пары настроек окружения логично иметь один файл, а не размазывать их по домашнему каталогу, но так и придется создать этот .bash_aliases. Теперь, когда понятно, почему .profile имеет смысл писать только экспортированные переменные, это не так раздражает.

Всем спасибо

bender ★★★★★
() автор топика
Ответ на: комментарий от bender

*явным образом экспортировали* (ведь правда?)


Да, экспортированная, хотя там есть еще модификация PATH без экспорта,
которая тоже сохраняется, но это понятно, значит она была экспортирована до
этого и так работает запись. Но без экспорта в обычной консольке переменная
не сохраняет жизнь между двумя энтерами,

Да бросьте! Что-то у вас так совсем странное происходит.

Короче, понятно. В .bashrc я не хотел писать, т.к. там сходу куча какого-то
дефолтного кода.

Возможно, имеет смысл разобраться, что́ это, и (возможно, ничего и не меняя), заверсионировать его да начать считать своим собственным. :-)

Вариант с .profile нравился тем, что для пары настроек окружения
логично иметь один файл

Совершенно справедливо. Но алиасы — не часть окружения. :-)

Если вы столкнулись с тем, что альяс вам нужен не в одной оболочке (в ГНУ Баше в данном случае), то имеет уже смысл превратить его в исполняемость (возможно, и не на Баше) да кинуть в ~/.bin/ (который в $PATH).

Всем спасибо

Всегда пожалуйста.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.