Переменная Pipe in Environment в оболочке fish не выполняет первую команду?

0

Я хочу установить fish_greeting в date --rfc-2822 | cowsay -f tux | lolcat (не суди меня). Когда я бегу date --rfc-2822 | cowsay -f tux | lolcat в интерактивном режиме я получаю правильный вывод (дата в речевом пузыре над смокингом в цветах радуги). Тем не менее, когда я set fish_greeting date --rfc-2822 | cowsay -f tux | lolcatЯ получаю этот вывод:

 _ 
<   >
 - 
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/

date --rfc-2822

(в цвете, конечно). Почему не работает первая труба?

ZuluDeltaNiner
источник
Я не знаю, что такое рыба, но вы пытались указать в команде полный путь к дате? Похоже, он просто выводит команду вместо ее выполнения
djsmiley2k
@ djsmiley2k fishshell.com , Я попытался / usr / bin / date, но это дает тот же вывод, но с / usr / bin / date внизу.
ZuluDeltaNiner
Странно, я только что быстро поигрался с cowsay (я не собираюсь устанавливать fishshell atm, потому что времени нет), но заставил его «работать» с cowsay $(/bin/date)
djsmiley2k
@ djsmiley2k В рыбе эквивалент cowsay (*command*) (это работает). Тем не менее, я думаю, что проблема в том, что первая команда отображается, а не выполняется, потому что новый вывод cowsay -f tux Sun, 01 May 2016 11:55:07 -0700
ZuluDeltaNiner

Ответы:

2

fish_greeting может быть функцией

function fish_greeting; date --rfc-2822 | cowsay -f tux | lolcat; end
glenn jackman
источник
Разъяснение: fish_greeting может быть литеральной строкой или функцией. Это должна быть функция, если вы выполняете такие вещи, как выполнение оператора, который включает в себя каналы (или любую внешнюю команду в этом отношении). Увидеть __fish_config_interactive.fish ,
Kurtis Rader