Псевдоним cd && echo не работает должным образом

I Я пытаюсь создать псевдоним, который изменяет каталог и печатает некоторый контент.

Я написал эту строку:

alias test="cd ~/Documents/MyDir && echo 'content'"

Результат:

content
~$:~/Documents/MyDir

Ожидаемый результат был:

~$:~/Documents/MyDir content
0
задан 26 April 2021 в 10:25

1 ответ

Если не будут добавлены дополнительные детали, то, что ниже, неплохое предположение о том, что происходит.

Во-первых, кое-что необходимо знать:

  • Сама команда cd не будет генерировать никаких выходных данных в вашем примере; см. команду cd на странице руководства Bash, чтобы узнать о 2 условиях, когда она действительно генерирует вывод, ни одно из которых здесь не применимо. (Возможно, вы или ваш системный администратор изменили настройку по умолчанию, но давайте предположим, что нет. Вы можете проверить это, запустив type cd ; если вы видите cd - это встроенная оболочка , тогда никакого переопределения не произошло.)

  • Когда оболочке требуется ввод от вас, она выдает приглашение, чтобы вы знали, что ждет вас. То, что он печатает, определяется значением переменной оболочки с именем PS1 ; вы можете увидеть это, введя echo "$ PS1" . Вашим может быть что-то вроде ~ $: \ w ( \ w расширяется до вашего текущего каталога; см. Раздел PROMPTING на странице руководства Bash).

Что происходит, когда вы вводите test для вызова своего псевдонима:

  1. Оболочка меняет каталог (вероятно, не выводит никаких данных), затем
  2. оболочка повторяет ваше содержимое , затем
  3. выполнив ваши инструкции, оболочка теперь предлагает вам ввести дополнительные данные, напечатав вашу переменную PS1 .

... и поэтому вы получаете неожиданные результаты.

Последнее замечание: в Unix / Linux уже есть команда с именем test ; запустите man test , чтобы увидеть, что он делает.Вы можете назвать свой псевдоним , попробуйте или albertotest . : -)

3
ответ дан 26 April 2021 в 23:06

Другие вопросы по тегам:

Похожие вопросы: