Рейтинг:7

Как я могу заставить псевдоним оболочки работать немедленно?

флаг pl

Определение и использование псевдонима в одной строке не работает:

$ псевдоним x=ls; Икс
х: команда не найдена

Как я могу "убежать" Икс во втором вызове так, чтобы он распознавался как псевдоним?

Someone avatar
флаг my
Добавьте псевдоним в файл `.bashrc`, затем просто напишите `source ~/.bashrc`, теперь псевдоним является постоянным.
Will avatar
флаг id
Я пробовал && и пробовал поместить несколько псевдонимов в одну строку (все они присваиваются) … но независимо от того, сколько вы поместите в строку, она не выполнит первый (или любой другой) псевдоним. в том же духе - очень интересно!
флаг hr
См. [Запустить псевдоним после создания] (https://unix.stackexchange.com/a/389974).
bers avatar
флаг pl
@Algnis `источник ~/.bashrc; x` по-прежнему не будет работать.
Рейтинг:11
флаг us

Вы не можете (обычными способами). Видеть раздел руководства Bash по псевдонимам (выделено мной):

Правила, касающиеся определения и использования псевдонимов, несколько сбивает с толку. Bash всегда считывает как минимум одну полную строку ввода, и все строки, составляющие составную команду, перед выполнением любой из команды в этой строке или составная команда. Псевдонимы расширены когда команда читается, а не когда она выполняется. Следовательно, псевдоним определение, появляющееся в той же строке, что и другая команда, не принимает действует до тех пор, пока не будет прочитана следующая строка ввода. Следующие команды определение псевдонима в этой строке не зависит от нового псевдонима. [...] На всякий случай всегда помещайте определения псевдонимов в отдельную строку и не используйте псевдонимы в составных командах.

Вы можете обойти это, заставив повторный анализ с помощью оценка:

$ псевдоним x=дата; оценка х
Пт, 12 нояб., 18:20:54 JST 2021
bers avatar
флаг pl
«eval» — это то, что я искал! (Я пробовал `exec`, но `eval` раньше не приходил мне в голову.) Спасибо!
bac0n avatar
флаг cn
+1 `shop -s extglob; eval эхо '!(файл)'`

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.