Lazy Calculation result of bash functions in иначе

I want to open new конечный простой window in current location by command in Ubuntu

gnome-terminal --working-directory=`pwd` & disown

Work's nice for я. But when I удар в лунку иначе to bashrc

alias clone="gnome-terminal --working-directory=`pwd` & disown "

pwd Calculated at start. So i get something like.

$ type clone
 clone is aliased to `gnome-terminal --working-directory=/home/user & disown '

Is it possible make pwd вычисли тебя only when i call иначе. Or I need to write bash function except иначе?

5
задан 3 December 2015 в 05:29

1 ответ

Просто используйте одинарные кавычки вокруг alias команда объявления так, чтобы замена команды (pwd) не происходит при объявлении (и расширится только, когда псевдоним называют):

alias clone='gnome-terminal --working-directory=`pwd` & disown'

Также начните использовать синтаксис замены команды $() вместо более старого и проблематичного ``:

alias clone='gnome-terminal --working-directory="$(pwd)" & disown'

Также отметьте это gnome-terminal разработан таким способом это каждый раз, когда Вы делаете

gnome-terminal

это открыло бы новое окно с тем же PID как исходный. Это вызвано тем, что это - тот же процесс дизайном, выходя каждый не уничтожит другой (s). Таким образом, Вам не нужно disown и фоновая обработка (&), просто:

alias clone='gnome-terminal --working-directory="$(pwd)"'

сделал бы.

Кроме того, как указано @Digital Травмой, gnome-terminal всегда начинается в текущем рабочем каталоге, таким образом, --working-directory не нужно, поскольку Вы устанавливаете его как pwd. Таким образом, можно просто сделать:

alias clone='gnome-terminal' 
10
ответ дан 23 November 2019 в 08:51

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

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