исказите “$ наутилуса (pwd)”, не открывается в pwd каталоге

Я использую файловый менеджер наутилуса и создал файл ~/.bash_aliases со строкой

alias naut="nautilus $(pwd) >/dev/null 2>&1 & disown;"

Затем я выполняюсь

source ~/.bashrc

Затем, когда я ввожу команду naut, файловый менеджер не открывается в pwd каталог, но в каталоге, в котором я в последний раз выполнился source ~/.bashrc . Который является странным, потому что, когда я создаю псевдоним

alias naut="pwd; nautilus $(pwd) > /dev/null 2>&1 & disown;"

команда naut всегда возвращает мой фактический рабочий каталог, в то время как вводный наутилус в другом каталоге.

Как это возможно?

0
задан 15 December 2016 в 08:30

1 ответ

man bash:

Включение символов в двойных кавычках сохраняет литеральное значение всех символов в кавычках, за исключением $, `, \, и, когда расширение истории включено, !. Символы $ и ` сохраните их особое значение в двойных кавычках. Обратная косая черта сохраняет свое особое значение только при сопровождении одним из следующих символов: $, `, ", \, или <новая строка>. Двойная кавычка может быть заключена в кавычки в двойных кавычках путем предшествования ему с обратной косой чертой. Если включено, расширение истории будет выполнено если ! появления в двойных кавычках оставляют с помощью обратной косой черты. Обратная косая черта, предшествующая ! не удален.

Как следствие, в Вашем определении $(pwd) расширен, когда псевдоним определяется, не, когда он выполняется. Используйте одинарные кавычки вокруг правой стороны определения псевдонима.

С другой стороны, как Bharadwaj Raju замечает, текущий рабочий каталог всегда ., так nautilus "$(pwd)" совпадает с nautilus .. И Вы, вероятно, хотите doublequotes вокруг $(pwd).

3
ответ дан 7 November 2019 в 07:51

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

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