簡體   English   中英

將多個項目附加到fish shell中的路徑(相當於:+ =)

[英]Append multiple items to path in fish shell (equivalent to: +=)

例如, chruby有一個用戶通過定義額外的ruby路徑。 下列:

RUBIES + =(/ opt / jruby-1.7.0“$ HOME / src / rubinius”)

在魚中有沒有很好的方法來實現這一目標?

所有魚類變量都是數組。 所以理論上這就簡單了

set -x RUBIES $RUBIES /opt/jruby-1.7.0 "$HOME/src/rubinius"

不幸的是,當導出var時,fish不會自動將該數組轉換為一串冒號分隔值。 目前,魚只為PATH和MANPATH做到了。

你可以這樣做:

set -x RUBIES "$RUBIES:/opt/jruby-1.7.0:$HOME/src/rubinius"

但是,假設RUBIES已經確定; 否則你得到一個帶有前導冒號的字符串,對於使用var的任何軟件,它可能有也可能沒有特殊含義。 處理這個很簡單:

if set -q RUBIES[1]
    set -x RUBIES "$RUBIES:/opt/jruby-1.7.0:$HOME/src/rubinius"
else
    set -x RUBIES "/opt/jruby-1.7.0:$HOME/src/rubinius"
end

太,如果你正在使用魚2.3(即將被釋放)或從git head構建的魚,你可以使用內置的新“string”來分割和連接冒號上的字符串:

set rubies (string split ':' $RUBIES)
set rubies $rubies /opt/jruby-1.7.0 "$HOME/src/rubinius"
set -x RUBIES (string join ':' $rubies)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM