Разделение команды на несколько строк в fish-shell

#fish

#fish

Вопрос:

Я пытаюсь разделить свой список дополнительных путей на несколько строк в моей конфигурации fish:

 # Path additions
for i in 
        ~/Library/Haskell/ghc-7.0.2/lib/gtk2hs-buildtools-0.12.0/bin 
        ~/Library/Haskell/bin 
        /Applications/MacVim.app/Contents/MacOS 
        /opt/local/bin 
        /usr/local/bin 
        /usr/local/git/bin 
        /Users/lyndon/.gem/ruby/1.8/bin
    if not contains $i $PATH
        set -x PATH $i $PATH
    end
end
  

Однако, похоже, это не работает, если все элементы не находятся в одной строке.

Возможно ли это? Кажется, я не могу найти никакой информации о том, как это сделать.

В качестве альтернативы, есть ли способ использовать литералы списка / массива для этого?

Ответ №1:

Я использую fish 2.0.0 в OSX 10.8.5, и ваш пример работает так, как я и ожидал (для путей, которые существуют на моем компьютере).

Запуск этого кода

 # Path additions
for i in 
    ~/bin 
    ~/.config/fish/functions
    if not contains $i $PATH
       echo $i 
    end
end
  

где ~/bin установлен в PATH, а ~/.config/fish/functions — нет, выводит:
~/bin

Я добавил вышеуказанное в свою конфигурацию fish, а затем запустил ее следующим образом: . ~/.config/fish/config.fish

Вот немного больше информации о многострочном редактировании:http://fishshell.com/docs/2.0/index.html#multiline

В fish нет литералов массива. Вы можете прочитать больше о массивах fish в документах. http://fishshell.com/docs/2.0/index.html#variables-arrays