sh -c 'env HOME=$(mktemp -d) fish'
рдЬрд╛рдБрдЪ рдХрд░реЗрдВ) ?рдордЫрд▓реА рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд ( fish --version
) : 2.4.0
OS / рдЯрд░реНрдорд┐рдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ : OSX 10.12.2 (16C67) / iTerm2 Build 3.0.13
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рд╕рд┐рд░реНрдл рдЕрдкрдиреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
#!/usr/bin/env ruby
p ARGV
рдФрд░ рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
> ./myscript.rb foo 'hello world'
["foo", "hello world"]
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдХреЛ рдПрдХ рддрд░реНрдХ рдмрдирд╛рдо "рд╣реИрд▓реЛ" рдФрд░ "рд╡рд░реНрд▓реНрдб" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдм, рдореИрдВ рдПрдХ рдлрд┐рд╢ рдлрдВрдХреНрд╢рди рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ рдЬреЛ рдореБрдЭреЗ рдХреБрдЫ рдИрдПрдирд╡реА рд╡рд░реНрдЬрди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдордирдорд╛рдиреЗ рдлрд┐рд╢ рдХрдорд╛рдВрдб (рдПрд▓рд┐рдпрд╛рд╕реЗрд╕ рд╕рд╣рд┐рдд) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИ
function debug
set -xg DEBUG 1
eval $argv
set -e DEBUG
end
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдКрдкрд░ рд╕реЗ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:
> debug ./myscript.rb foo 'hello world'
["foo", "hello", "world"]
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХрд▓ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рддрд░реНрдХ "рд╣реИрд▓реЛ" рдФрд░ "рд╡рд░реНрд▓реНрдб" рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛, рдЬреЛ рдХрд┐ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдореИрдВрдиреЗ рднреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ:
env DEBUG=1 fish -c "$argv"
рдЬреЛ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛ред
рдХреНрдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ $argv
"рд╣реЗрд▓реНрд▓реЛ рд╡рд░реНрд▓реНрдб" рдХреЛ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдореИрдВ рдХреНрдпрд╛ рдЦреЛ рд░рд╣рд╛ рд╣реВрдБ?
рдпрд╣ eval
рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "$ argv" рдирд╣реАрдВред
eval
рдЕрдкрдиреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рддрд░реНрдХ рдХреИрд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рд╣рдо рдкрд╣рд▓реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЖрдо рд╕рд╣рдорддрд┐ рдереА рдХрд┐ рд╣рдо рдЕрдм рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рдЬреЛ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ # 154 рдореЗрдВ рд╣реИ - command
рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк command $argv
рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдЗрд╕реЗ рдЪрд▓рд╛рдПрдЧрд╛ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдк string escape
, рдЕрд░реНрдерд╛рдд eval (string escape -- $argv)
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдзрдиреНрдпрд╡рд╛рджред (string escape -- $argv)
рдХрд╛рдо рдХрд┐рдпрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдк
string escape
, рдЕрд░реНрдерд╛рддeval (string escape -- $argv)
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред