[[ -t 0 ]]
просто определяет, открыт ли fd0 на (псевдо-)терминале. Поскольку fd0 является стандартным вводом, обычно это так.
Потому что в скриптах нельзя использовать псевдонимы. Псевдонимы "конвертируются" только при вводе на терминале (, иначе написание скриптов будет затруднено, потому что вы не знаете, как ls
или rm
отреагируют, например ).
Я считаю, что переменные — это alias
скриптов.
Вы всегда можете сделать следующее, [Но не рекомендуется]
[arif@arif ~]$ yumi='yum install -y'
[arif@arif ~]$ $yumi tmux
Error: This command has to be run under the root user.
Почему этот метод не рекомендуется и как следовать, обсуждается по этой ссылке.
Вы также можете использовать функцию для yumy
:
#!/bin/bash
yumy() {
yum install -y "$@"
}
yumprovision() {
yumy
}
"$@"
расширяется до аргументов этой функции, поэтому yumy foo bar
работает так же, как yum install -y foo bar
.
Bash по умолчанию не расширяет псевдонимы в неинтерактивных оболочках, но вы можете изменить это с помощью shopt expand_aliases
, если вы действительно хотите, см. The Shopt Builtin в руководстве . Но причин для этого мало, функции во многих отношениях лучше.