Подтвердить что ты не робот

Предотвратить псевдоним bash от оценки инструкции при запуске оболочки

Скажем, у меня есть следующий псевдоним.

alias pwd_alias='echo `pwd`'

Этот псевдоним не является "динамическим". Он оценивает pwd, как только начинается оболочка. В любом случае, чтобы отсрочить оценку выражения в тиках до выполнения псевдонима?

4b9b3361

Ответ 1

То, что вы действительно хотите, это функция, а не псевдоним.

pwd_alias() {
   echo "$PWD"
}

Псевдонимы не более чем заменяют текст. Все, что со сложностью вызывает функцию.

Ответ 2

Как сказал иордан, псевдонимы не более чем заменяют текст.
Если вы хотите, чтобы аргумент эха был выходом pwd, расширенным на bash, тогда я не понимаю ваш вопрос.
Если вы хотите, чтобы аргумент эха был `pwd` с сохраненными backquotes, это действительно возможно, например:

alias a="echo '\`pwd\`'"

Итак, если вместо echo у вас есть что-то, что делает расширение backquote в его собственной среде выполнения, возможно, что вы хотите.

Ответ 3

Я не верю, что вы можете изменить оценку, начиная с начала оболочки. Поскольку процессы создания псевдонима выполняются при запуске оболочки, тогда оценивается pwd. Вы можете просто изменить псевдоним, чтобы просто запустить pwd без обратных тиков в качестве pwd выходов без необходимости эха. Простым способом решения этой проблемы является переход от использования псевдонима к оболочке script в вашем пути, если вы не хотите изменять использование псевдонима.

#!/bin/bash
pwd