Fish-shell: UTF-8 рд╕реНрдерд╛рди DragonFly BSD, FreeBSD 11, 12 рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рдордИ 2016  ┬╖  60рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: fish-shell/fish-shell

рдЬрдм рдПрдХ рд▓рд╛рдЗрди рдХреА рддрд░рд╣:
set LANG zh_CN.UTF-8
.config / рдордЫрд▓реА / config.fish
рдЕрдЧрд░ рдХрдорд╛рдВрдб рдЧрд▓рдд рд╣реИ рддреЛ рдХрд┐рд╕реА рднреА рд╡рд░реНрдг рдХреЛ рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддреЗред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдХреЗрдЯ

рдореИрдВ рдХрдорд╛рдВрдб 'рдХреИрдЯ' рдХреЗ рд▓рд┐рдП 'рдИ' рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдЪрд░рд┐рддреНрд░ рдХреЛ рдирд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
рдХреЗ рддрд╣рдд 2.2.0 рдареАрдХ рд╣реИред


рдордЫрд▓реА рд╕рдВрд╕реНрдХрд░рдг: рдордЫрд▓реА, рд╕рдВрд╕реНрдХрд░рдг 2.3.0

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо: DragonFly testdf.com 4.4-RELEASE DragonFly v4.4.1.18.gc5db8-RELEASE # 0: Thu Jan 28 15:02:10 CST 2016 [email protected] / usr / obj / usr / src / sys / sysред lhmwzy x86_64

рдЯрд░реНрдорд┐рдирд▓ рдпрд╛ рдЯрд░реНрдорд┐рдирд▓ рдПрдореБрд▓реЗрдЯрд░: xterm

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рдпрд╣ FreeBSD рдмрдЧ рдЦреЛрд▓рд╛ рд╣реИред рд╣рдореЗрдВ рдЕрднреА рднреА рдЗрд╕ рдЯреВрдЯреЗ рд╣реБрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╕рднреА 60 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХрд┐рд╕ рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛ рд░рд╣реЗ рд╣реЛ? рдмреИрдХрд╕реНрдкреЗрд╕?

рдЕрдЧрд░ рдпрд╣ рд╕рдЪ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ bind -k backspace рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╕реЗрдЯ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЪрд▓рд╛рдПрдВ рдЙрджрд╛ script (рдпрд╛ bash рдФрд░ ctrl + v рджрдмрд╛рдПрдВ) рдФрд░ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреМрди рд╕рд╛ рдХреНрд░рдо рджрдмрд╛рдПрдВ рдпрд╣ рднреЗрдЬрддрд╛ рд╣реИред (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрд╕ рд╕рддреНрд░ рдХреЗ рд╕рдВрдкреВрд░реНрдг рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ "рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдирд╛рдордХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓ рджреЗрдЧреА)ред Xterm рдХреЛ "\ cH" рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдордЫрд▓реА (рдЯрд░реНрдореЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЬрд┐рд╕реЗ _needs_ $ TERM рдХреЛ рдареАрдХ рд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ) рдХреЛ рдмреИрдХрд╕реНрдкреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдПред

рднрд╡рд┐рд╖реНрдп рдХреЗ рдордЫрд▓реА рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕реЗ "рдордЫрд▓реА_рдХреА_рдкреНрд░рд╡рд╛рд╣" рдирд╛рдордХ рдПрдХ рдЫреЛрдЯреЗ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╣рдж рддрдХ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдВрдЧреЗред

рдЖрдкрдХрд╛ $ TERM рдХрд┐рд╕ рдкрд░ рд╕реЗрдЯ рд╣реИ? "рдЯрд░реНрдо"?

рдХреБрдВрдЬреА рдмреИрдХрд╕реНрдкреЗрд╕ рд╣реИред
рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдПрдХ рдореЗрд▓ рднреЗрдЬреЗрдВ, рдФрд░ рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдмреЙрдХреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рджреВрдВрдЧрд╛, рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреБрдВрдЬреА рдмреИрдХрд╕реНрдкреЗрд╕ рд╣реИред

рдХреБрдВрдЬреА рдкрд░ рд▓реЗрдмрд▓ рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╡рд░реНрдг рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдЦреАрдВрдЪреЗ рдЧрдП рд╕реНрд░реЛрдд рд╕реЗ рдордЫрд▓реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрджрд┐ рдЖрдк make fish_key_reader рдмрд╛рдж ./fish_key_reader рдмрд╛рдж рдЕрдкрдирд╛ рдмреИрдХрд╕реНрдкреЗрд╕ рдХреБрдВрдЬреА рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреГрдкрдпрд╛ xxd рдпрд╛ od -tx1z рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ [ctrl-D] рдХреЗ рдмрд╛рдж рдЕрдкрдиреА рдмреИрдХрд╕реНрдкреЗрд╕ рдХреБрдВрдЬреА рджрдмрд╛рдПрдВред bind -k backspace рднреА рдЪрд▓рд╛рдПрдВ рдФрд░ рд╣рдореЗрдВ рд╡рд╣ рдЖрдЙрдЯрдкреБрдЯ рджрд┐рдЦрд╛рдПрдВред echo $TERM рднреА рдЪрд▓рд╛рдПрдВред

рд╣рдо рджреЗрдпрддрд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓реЙрдЧрд┐рди рдирд╣реАрдВ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЪреАрдиреА рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП set LANG zh_CN.UTF-8 рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред

./fish_key_reader
999999 usec dec: 8 hex: 8 char: \ b (рдЙрд░реНрдл \ cH)
FYI рдХрд░реЗрдВ: рдмрд╛рдБрдз рдХреБрдВрдЬреА рдирд╛рдо "рдмреИрдХрд╕реНрдкреЗрд╕" рдХреЗ рд▓рд┐рдП рджреЗрдЦрд╛ рдЧрдпрд╛ рдЕрдиреБрдХреНрд░рдо

рдмрд╛рдЗрдВрдб -рдХ рдмреИрдХрд╕реНрдкреЗрд╕
рдмрд╛рдЗрдВрдб: рдХреБрдВрдЬреА 'рдмреИрдХрд╕реНрдкреЗрд╕' рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдирд╣реАрдВ рдорд┐рд▓рд╛

рдЧреВрдВрдЬ $ TERM
рдЯрд░реНрдо

рдмрд╛рдЗрдВрдб: рдХреБрдВрдЬреА 'рдмреИрдХрд╕реНрдкреЗрд╕' рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдирд╣реАрдВ рдорд┐рд▓рд╛

рдареАрдХ рд╣реИ, рд╡рд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЗрд╕реЗ рдХреБрдЫ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП

bind -k backspace backward-delete-char

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рд▓реИрдВрдЧ рдЪрд░ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдпрд╣ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдиреЗ рдХрд┐рд╕реА рддрд░рд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреБрдВрдЬреА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдореИрдВ "рдмрд╛рдЗрдВрдб" рд╢рдмреНрдж рдХреЗ рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА _ ~ / .config / рдордЫрд▓реА / _ ** рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЦреЛрдЬреВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рднреА рдкреНрд▓рдЧрдЗрди рдкреНрд░рдмрдВрдзрдХреЛрдВ (рдЬреИрд╕реЗ, рдордЫреБрдЖрд░реЗ рдпрд╛ рдУрд╣-рдореЗрд░реА-рдордЫрд▓реА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдЖрдкрдиреЗ рдХреЛрдИ рдЕрдиреНрдп рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХреА рд╣реИ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ?

рдареАрдХред
~ / .config / рдордЫрд▓реА / рдХреЗрд╡рд▓ 3 рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ: config.fish fish_history fishd.lhmtestdf.com

cat config.fish
set LANG zh_CN.UTF-8
cat fishd.lhmtestdf.com 
# This file is automatically generated by the fish.
# Do NOT edit it directly, your changes will be overwritten.
SET __fish_init_1_50_0:\x1d
SET __fish_init_2_3_0:\x1d
SET fish_color_autosuggestion:555\x1eyellow
SET fish_color_command:005fd7\x1epurple
SET fish_color_comment:red
SET fish_color_cwd:green
SET fish_color_cwd_root:red
SET fish_color_end:green
SET fish_color_error:red\x1e\x2d\x2dbold
SET fish_color_escape:cyan
SET fish_color_history_current:cyan
SET fish_color_host:normal
SET fish_color_match:cyan
SET fish_color_normal:normal
SET fish_color_operator:cyan
SET fish_color_param:00afff\x1ecyan
SET fish_color_quote:brown
SET fish_color_redirection:normal
SET fish_color_search_match:\x2d\x2dbackground\x3dpurple
SET fish_color_selection:\x2d\x2dbackground\x3dpurple
SET fish_color_user:green
SET fish_color_valid_path:\x2d\x2dunderline
SET fish_greeting:Welcome\x20to\x20fish\x2c\x20the\x20friendly\x20interactive\x20shell\x0aType\x20\x1b\x5b32mhelp\x1b\x5b30m\x1b\x28B\x1b\x5bm\x20for\x20instructions\x20on\x20how\x20to\x20use\x20fish
SET fish_key_bindings:fish_default_key_bindings
SET fish_pager_color_completion:normal
SET fish_pager_color_description:555\x1eyellow
SET fish_pager_color_prefix:cyan
SET fish_pager_color_progress:cyan

рдордЫрд▓реА рдХреЗ рддрд╣рдд- 2.2.0
рдХрдорд╛рдВрдб рдмрд╛рдБрдз:

bind
bind '' self-insert
bind \n execute
bind \ck kill-line
bind \cy yank
bind \t complete
bind \e\n commandline\ -i\ \\n
bind \e\[A up-or-search
bind \e\[B down-or-search
bind -k down down-or-search
bind -k up up-or-search
bind \e\[C forward-char
bind \e\[D backward-char
bind -k right forward-char
bind -k left backward-char
bind -k dc delete-char
bind -k backspace backward-delete-char
bind backward-delete-char
bind \e\[H beginning-of-line
bind \e\[F end-of-line
bind \e\[1\~ beginning-of-line
bind \e\[4\~ end-of-line
bind -k home beginning-of-line
bind -k end end-of-line
bind -k sdc backward-delete-char
bind \e\eOC nextd-or-forward-word
bind \e\eOD prevd-or-backward-word
bind \e\e\[C nextd-or-forward-word
bind \e\e\[D prevd-or-backward-word
bind \eO3C nextd-or-forward-word
bind \eO3D prevd-or-backward-word
bind \e\[3C nextd-or-forward-word
bind \e\[3D prevd-or-backward-word
bind \e\[1\;3C nextd-or-forward-word
bind \e\[1\;3D prevd-or-backward-word
bind \e\eOA history-token-search-backward
bind \e\eOB history-token-search-forward
bind \e\e\[A history-token-search-backward
bind \e\e\[B history-token-search-forward
bind \eO3A history-token-search-backward
bind \eO3B history-token-search-forward
bind \e\[3A history-token-search-backward
bind \e\[3B history-token-search-forward
bind \e\[1\;3A history-token-search-backward
bind \e\[1\;3B history-token-search-forward
bind \ca beginning-of-line
bind \ce end-of-line
bind \ey yank-pop
bind \cw backward-kill-path-component
bind \cp history-search-backward
bind \cn history-search-forward
bind \cf forward-char
bind \cb backward-char
bind \ct transpose-chars
bind \et transpose-words
bind \eu upcase-word
bind \ec capitalize-word
bind \ backward-kill-word
bind \eb backward-word
bind \ef forward-word
bind \e\[1\;5C forward-word
bind \e\[1\;5D backward-word
bind \e\[1\;9A history-token-search-backward
bind \e\[1\;9B history-token-search-forward
bind \e\[1\;9C forward-word
bind \e\[1\;9D backward-word
bind \e. history-token-search-backward
bind -k ppage beginning-of-history
bind -k npage end-of-history
bind \e\< beginning-of-buffer
bind \e\> end-of-buffer
bind \el __fish_list_current_token
bind \ew 'set tok (commandline -pt); if test $tok[1]; echo; whatis $tok[1]; commandline -f repaint; end'
bind \cl 'clear; commandline -f repaint'
bind \cc 'commandline ""'
bind \cu backward-kill-line
bind \ed kill-word
bind \cd delete-or-exit
bind -k f1 __fish_man_page
bind \eh __fish_man_page
bind \ep __fish_paginate
bind -k btab complete-and-search
bind \e cancel
bind \e\[I 'begin;end'
bind \e\[O 'begin;end'

рд▓реЗрдХрд┐рди рдордЫрд▓реА-2.3.0 рдХреЗ рддрд╣рдд, рдХрдорд╛рдВрдб рдмрд╛рдЗрдВрдб рдЖрдЙрдЯрдкреБрдЯ:

bind
bind '' self-insert
bind \n execute
bind \r execute
bind \t complete
bind \cc 'commandline ""'
bind \cd exit
bind \ce bind

рдЖрдкрдиреЗ рдордЫрд▓реА рдХреЛ 2.3.0 рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдордЫрд▓реА рдмрд╛рдЗрдирд░реА рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реИред

рд╕реНрд░реЛрдд рд╕реЗ

git clone
autoconf
configure
gmake
gmake install

рдареАрдХ рд╣реИ, рдЬреЛ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ:

echo $__fish_active_key_bindings
echo $fish_function_path

рдХреНрдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдкрде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ (рдЖрдорддреМрд░ рдкрд░ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реВрдЪреАрдмрджреНрдз) рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ _fish_default_key_bindings.fish_ рд╣реИ? рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдБ рдХрд┐ рдХреНрдпрд╛ functions fish_default_key_bindings рдЖрдЙрдЯрдкреБрдЯ рд╣реИред рдЙрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореИрдЪ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ _fish_default_key_bindings.fish_ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдВрдЬреА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЖрдорддреМрд░ рдкрд░ ___ fish_config_interactive.fish_ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯрдЕрдк рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдкрде var рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪреАрдмрджреНрдз рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЬрдм рдореИрдВ .config / рдордЫрд▓реА / config.fish рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рдЪрд▓рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ .config / рдордЫрд▓реА / config.fish рдпрд╛ /usr/local/etc/fish/config.fish рдореЗрдВ set LANG zh_CN.UTF-8 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбрд╛рд▓рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИред

echo $__fish_active_key_bindings рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

echo $fish_function_path рдЖрдЙрдЯрдкреБрдЯ:
/home/lhm/.config/fish/functions /usr/local/etc/fish/functions /usr/local/share/fish/vendor_functions.d /usr/local/share/fish/functions

рдЬрдм рдореИрдВ .config / рдордЫрд▓реА / config.fish рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реВрдВ рдпрд╛ /usr/local/etc/fish/config.fish рдореЗрдВ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВ:

echo $__fish_active_key_bindings рдЖрдЙрдЯрдкреБрдЯ:
fish_default_key_bindings

echo $fish_function_path рдЖрдЙрдЯрдкреБрдЯ:
/home/lhm/.config/fish/functions /usr/local/etc/fish/functions /usr/local/share/fish/vendor_functions.d /usr/local/share/fish/functions

рдлрд╝рд╛рдЗрд▓ fish_default_key_bindings.fish /usr/local/share/fish/functions/fish_default_key_bindings.fish рдореЗрдВ рд╣реИ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдордЫрд▓реА рдХрднреА рдХреАрдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рдпрд╣ рдпрд╛ рддреЛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ __fish_config_interactive (рдЬрд┐рд╕рдореЗрдВ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реЗрдЯрдЕрдк рд╢рд╛рдорд┐рд▓ рд╣реИ) рдХрднреА рднреА рдирд╣реАрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреЛ рдХрд┐ рдЖрдкрдХреЗ рдкрд╣рд▓реЗ рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреА $ fish_key_bindings рдЦрд╛рд▓реА рд╣реИ (рдпрджрд┐ рдореВрд▓реНрдп рд╣реИ рддреЛ рд╣рдо рд╢рд╛рдпрдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП) рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ)ред

рдЪреВрдБрдХрд┐ рдпрд╣ $ LANG рд╕реЗрдЯ рдХрд░рдХреЗ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред

рдЖрдкрдХреА рд╕рднреА рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓ рдФрд░ рдлрд┐рд╢рдб рдлрд╛рдЗрд▓ рдПрдХ рдкреНрд░рд╛рдЪреАрди рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рд╣реЛ рд╕рдХрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬреАрдердм рдорджрдж рд╕реЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ config.fish рдореЗрдВ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХрд╛ $ LANG рдорд╛рди рдХреНрдпрд╛ рд╣реИ? (рдпрд╣ рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ-рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЕрдкрдиреА рдлрд╛рдЗрд▓реЗрдВ рднреА рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ)

рдореИрдВрдиреЗ рдЕрдкрдиреЗ _config.fish_ рдореЗрдВ set LANG zh_CN.UTF-8 рдЬреЛрдбрд╝рд╛ рдФрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдЕрдиреБрднрд╡ рдХреАред рдЬреИрд╕рд╛ рдХрд┐ @faho рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЪрд░рд┐рддреНрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореБрджреНрджреЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрдкрдХреА рдордЫрд▓реА рдХреА рдлрд╛рдЗрд▓реЗрдВ UTF-8 рдХреЗ рд░реВрдк рдореЗрдВ рдПрдиреНрдХреЛрдбреЗрдб рдирд╣реАрдВ рд╣реИрдВред file /usr/local/share/fish/functions/__fish_config_interactive.fish рд░рд┐рдкреЛрд░реНрдЯ рдХреНрдпрд╛ рд╣реИ? рдпрджрд┐ рдпрд╣ "ASCII рдкрд╛рда" рдХрд╣рддрд╛ рд╣реИ, рддреЛ рдЕрдкрдиреА LANG рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ, рдлрд┐рд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╢реЗрд▓ рд╢реБрд░реВ рдХрд░реЗрдВ:

script
fish -d5
exit
exit

рдлрд┐рд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ _typescript_ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред

file /usr/local/share/fish/functions/__fish_config_interactive.fish
/usr/local/share/fish/functions/__fish_config_interactive.fish: ASCII text

cat typescript output:
Script started on Mon May 23 07:34:02 2016
@ ~/home/lhm> /usr/local/bin/fish -d5
@ ~/home/lhm> exit

@ ~/home/lhm> exit

рдХреНрдпрд╛ рдмрдХрд╡рд╛рд╕ рд╣реИ? рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ fish -d5 рдиреЗ рд╢реЗрд▓ рдкреНрд░реЙрдореНрдкреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ? рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдПрдХ рдЯрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдирд┐рдореНрди рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

fish: Continue job 1, gid 0 (fish_title), COMPLETED, NON-INTERACTIVE
fish: proc::read_try('fish_title')
fish: io_buffer_t::read: blocking read on fd 3

рдХреНрдпрд╛ DragonFly https://www.dragonflybsd.org/ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИ set LANG C рдпрд╛ set LANG en_US.UTF-8 рдмрдЬрд╛рдп рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред

рд╣рд╛рдВ, https://www.dragonflybsd.org/ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реЛрдо рдкреЗрдЬ рд╣реИред
рдореИрдВ рдЬреИрд╕реЗ рдЧрд┐рдЯ рд╕реНрд░реЛрдд рд╕реЗ рдирд┐рд░реНрдорд╛рдг:

git clone
autoconf
configure
gmake
gmake install

рдХреЗрд╡рд▓ рд╕реЗрдЯ рд▓реИрдВрдЧ C fish -d5 рд╡рд░реНрдХрд┐рдВрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕реЗ:

<2> fish: sourcing /usr/local/share/fish/config.fish
<4> fish: Exec job 'builtin source /usr/local/share/fish/config.fish' with id 1
<4> fish: Exec job 'set -g IFS \n\ \t' with id 2
<3> fish: Skipping fork: no output for internal builtin 'set'
<3> fish: Set status of set -g IFS \n\ \t to 0 using short circuit
<3> fish: Job is constructed
<4> fish: Continue job 2, gid 0 (set -g IFS \n\ \t), COMPLETED, NON-INTERACTIVE
<4> fish: Exec job 'status --is-interactive' with id 2
<3> fish: Skipping fork: no output for internal builtin 'status'
<3> fish: Set status of status --is-interactive to 0 using short circuit
<3> fish: Job is constructed
<4> fish: Continue job 2, gid 0 (status --is-interactive), COMPLETED, NON-INTERACTIVE
<4> fish: Exec job 'not set -q NVIM_LISTEN_ADDRESS' with id 2
<3> fish: Skipping fork: no output for internal builtin 'set'
<3> fish: Set status of not set -q NVIM_LISTEN_ADDRESS to 1 using short circuit
<3> fish: Job is constructed
<4> fish: Continue job 2, gid 0 (not set -q NVIM_LISTEN_ADDRESS), COMPLETED, NON-INTERACTIV

set LANG en_US.UTF-8 set LANG zh_CN.UTF-8 рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рд╣реИ, рд╢реЗрд▓ рдкреНрд░реЙрдореНрдкреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реИред

рдПрдХ рдЕрдиреНрдп DF 4.4 рдмреЙрдХреНрд╕ рдкрд░

/usr/local/bin/fish -d5
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings

рдордЫрд▓реА -реи.реи.реж рд░рди рдареАрдХ рд╣реИред

рдареАрдХ рд╣реИ, рдордЫрд▓реА рдФрд░ рдбреНрд░реИрдЧрдирдлрд▓реА рд╡реНрдпрд╛рдкрдХ рдЪрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдореЗрдВ рдмрдЧ рдХреЗ рдмреАрдЪ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд╕рдВрдЧрддрд┐ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдбреНрд░реИрдЧрдирдлрд╝рд▓реА 4.3 рдкреНрд░рдгрд╛рд▓реА рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдордЫрд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдбреНрд░реИрдЧрдирдлрд▓реА 4.4 рд╕реНрдерд╛рдиреАрдп рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд┐рдП рдЧрдП рдмрджрд▓рд╛рд╡ рд╣реИрдВ рдЬреЛ рдХрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рд╣реИред

рдореИрдВ 4.2-RELEASE DragonFly рдмреЙрдХреНрд╕ рдкрд░ рдирд╡реАрдирддрдо рдордЫрд▓реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ, рд╕рдм рдХреБрдЫ рдареАрдХ рдЪрд▓рддрд╛ рд╣реИред

cat .config/fish/config.fish 
set -gx LANG zh_CN.UTF-8

locale
LANG="zh_CN.UTF-8"
LC_CTYPE="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_ALL=""


/usr/local/bin/fish -v
fish, version 2.3.0-162-g85e701f

uname -a
DragonFly . 4.2-RELEASE DragonFly v4.2.4-RELEASE #6: Sun Aug  9 13:25:14 EDT 2015     [email protected]:/usr/obj/home/justin/release/4_2/sys/X86_64_GENERIC  x86_64

рдареАрдХ рд╣реИ, рдХреГрдкрдпрд╛ рдбреНрд░реИрдЧрдирдлрд╝рд▓реА рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рдХрд┐ рджреЛрд╖ рдЙрдирдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╣реИред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдзрд┐рдХ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ mbrtowc() рдФрд░ wcrtomb() рдЬреИрд╕реЗ рдХрд╛рд░реНрдп рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдЬрдм рдордЫрд▓реА рдЙрдиреНрд╣реЗрдВ рдмреБрд▓рд╛рддреА рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗрд╡рд▓ рдордЫрд▓реА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА UTF-8 рд▓реЛрдХреЗрд▓ (рдЬреИрд╕реЗ en_AU.UTF-8 ) рдХреЗ рд╕рд╛рде DragonFly BSD 4.5-DEVELOPMENT рдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@ krader1961
рдЗрд╕рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ mbrtowc () рдФрд░ wcrtomb ()?

рдареАрдХ рд╣реИ, рдХреГрдкрдпрд╛ рдбреНрд░реИрдЧрдирдлрд╝рд▓реА рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рдХрд┐ рджреЛрд╖ рдЙрдирдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╣реИред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдордмрдЯреЛрд╡ () рдФрд░ wcrtomb () рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдЬрдм рдордЫрд▓реА рдЙрдиреНрд╣реЗрдВ рдмреБрд▓рд╛рддреА рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗрд╡рд▓ рдордЫрд▓реА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ mbrtowc () рдФрд░ wcrtomb ()?

рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛

$ gmake fish_tests
$ ./fish_tests convert

рд▓реЗрдХрд┐рди рд╡рд╣ рдЕрд╕рдлрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред ./fish_tests рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рд╕реЗ рдХрдИ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдЧрд╛ред

рдореИрдВрдиреЗ рдбреНрд░реИрдЧрдирдлрд╝рд▓реА 4.4.3 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЧрд┐рдЯ рд╣реЗрдб рд╕реЗ рдордЫрд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рдореЗрд░реЗ _config.fish_ рдореЗрдВ set -x LANG en_US.UTF-8 рд╕рд╛рде рдордЫрд▓реА рд╢реБрд░реВ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐

alias: Name cannot be empty
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings

рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рдХрд┐ bind рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдиреНрдпреВрдирддрдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдмрд╣реБрдд рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред locale рдХрдорд╛рдВрдб рдиреЗ C рддрдм рддрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрдм рддрдХ рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ en_US.UTF-8 рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдкреВрд░реНрд╡ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХреЗрд▓ "en_US.UTF-8" рдХреЗ рдмрдЬрд╛рдп "C" рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреНрд░реИрдЧрдирдлрд╝рд▓реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ UTF-8 рд╕рдорд░реНрдерди рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВ?

рдореИрдВ рдЗрд╕реЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛ рдирд╣реАрдВред рдореИрдВ рдЖрдкрдХреЛ рдбреНрд░реИрдЧрдирдлрд╝рд▓реА рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рд╕реЗ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВред

рдореЗрд░реЗ рдкрд╛рд╕ fwprintf рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рдиреНрдпреВрдирддрдо рдЯреЗрд╕реНрдЯрдХреЗрд╕ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдбреНрд░реИрдЧрдирдлрд╝рд▓реА рдмреАрдПрд╕рдбреА рдкреНрд░рдХрд╛рд░ рдкреВрдЫреВрдВрдЧрд╛ред

рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдкреИрдЪ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдбреНрд░реИрдЧрдирдлрд▓реА рдмреАрдПрд╕рдбреА рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ, рд░реЛрдорд┐рдХ рдХрд╣рддреЗ рд╣реИрдВ :

рдореИрдВрдиреЗ рдордЫрд▓реА-рдЦреЛрд▓ рдореЗрдВ рдкрд╛рд░реНрд╕рд░ рдХреЛ рджреЗрдЦрд╛, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдЪреАрдЬреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ BRACKET_BEGIN, BRACKET_END, BRACKET_SEP, INTERNAL_SEPARATOR рдФрд░ рдЗрддрдиреЗ рдкрд░ред

рдпрд╣ рддрдм рддрдХ рдареАрдХ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЙрд╕ рд▓реЛрдХреЗрд▓ рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрдг рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рдкреВрд░реНрдг рд╕рджрд╕реНрдп рд╣реИрдВред
рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдпреВрдирд┐рдХреЛрдб рд╢реНрд░реЗрдгреА 0x0 рд╕реЗ 0x10FFFF рд╣реИ, рдФрд░ рд╡рд░реНрдг INTERNAL_SEPARATOR рдХрд╛ рдХреЛрдб 0xFDD7 рд╣реИред

DragonFly рдореЗрдВ BSD рдлрдВрдХреНрд╢рди iswalnum () рдПрдХ рд╕рд╛рде рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП
рдЖрдкрдХреЗ рдкрд╛рд╕ рддреАрди рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
1) рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдЗрд╕реНрд▓рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ():

diff --git a/src/common.h b/src/common.h
index e59dfc0..e8c01c3 100644
--- a/src/common.h
+++ b/src/common.h
@@ -769,4 +769,8 @@ __attribute__((noinline)) void debug_thread_error(void);
 /// specified base, return -1.
 long convert_digit(wchar_t d, int base);

+inline int iswalnum(wchar_t chr) {
+ return((chr >= L'a' && chr <= L'z') || (chr >= L'A' && chr <= L'Z') || iswdigit(chr));
+}
+
 #endif

2) рдЕрдкрдиреЗ рд╡рд┐рд╢реЗрд╖ рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдореИрдВрдиреЗ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ)ред

3) рдХреБрдЫ рдФрд░ :)

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рд╡рд╣ рд╡реНрдпрдХреНрддрд┐ рдпреВрдирд┐рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирддрд╛ рд╣реИред рд╡реЗ "рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг" рдирд┐рдЬреА рдЙрдкрдпреЛрдЧ рдХреНрд╖реЗрддреНрд░ рд╡рд░реНрдг рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: https://en.wikipedia.org/wiki/Unicode_character_property#General_Categoryред рдореИрдВрдиреЗ рдУрдПрд╕ рдПрдХреНрд╕, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдбреНрд░реИрдЧрдирдлрд▓реА рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рдФрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рднреА iswalnum(INTERNAL_SEPARATOR) рд▓рд┐рдП рдЭреВрдареЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЙрди рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдгреЛрдВ рдХреЛ fwprintf () рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрднреА рднреА рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ @zanchey!

рдЖрдк рдбреНрд░реИрдЧрдирдлреНрд▓рд╛рдИрдмреАрдПрд╕рдбреА рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВрдиреЗ рдПрдХ рд░рд╛рдд рдЖрдИрдПрд╕рдУ рдХреЗ рд╕рд╛рде рдФрд░ 4.4.3 рд░рд┐рд▓реАрдЬ рдЖрдИрдПрд╕рдУ (рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ fwprintf рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВ 4.4.3 рдкрд░ рдордЫрд▓реА рдмрдирд╛рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рдерд╛, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рднреА, рдиреЛрдЯрд┐рдлрд╝рд╛рдпрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ред

рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдорд╛рдорд▓рд╛ рдХреЗрд╡рд▓ SSH рдкрд░ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ - рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХрдВрд╕реЛрд▓ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдУрд╣ рд╡рд╛рд╣ред рдХреНрдпрд╛ рдЖрдк рд╡реИрдЧреНрд░рд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдирд╣реАрдВ, рдмрд╕ рд╕рд╛рджрд╛ VirtualBox 5.0.20ред

рдореИрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ # 3406 рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕рдХрд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд▓реЗрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ FreeBSD рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдпрджрд┐ рд╕рдлрд▓ рдЖрдЧреЗ рдбрд┐рдмрдЧ рдХрд░рддрд╛ рд╣реИред

@lhmwzy рдпрд╣ рд╢рд╛рдпрдж # 3406 рдЬреИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рд╣реИред FYI рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдЙрд╕ рдмрд╛рдж рд╡рд╛рд▓реЗ рдореБрджреНрджреЗ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдФрд░ f2246dfb343bea19beb176fb2cc534f85513b2eb рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ред

рдореЗрд░реЗ рдЕрдкрдбреЗрдЯ рд╕реЗ # 3406 рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рдЕрдм рдбреНрд░реИрдЧрдирдлрд▓реА рдмреАрдПрд╕рдбреА рдХреЗ рдмрдЬрд╛рдп рдлреНрд░реАрдмреАрдПрд╕рдбреА 12 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ):

FYI рдХрд░реЗрдВ, рдореИрдВрдиреЗ FreeBSD 12 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреБрдВрдЬреА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ UTF-8 рд▓реЛрдХреЗрд▓ рдореЗрдВ рд╕реЗрдЯрдЕрдк рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ:

Reverting to default bindings
The function call stack limit has been exceeded. Do you have an accidental infinite loop?
fish: __fish_reload_key_bindings VARIABLE SET fish_key_bindings
      ^
in event handler: handler for variable 'fish_key_bindings'

рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ рднреА рд╣реИрдВ рдЬреИрд╕реЗ alias: Name cannot be empty ред рдореИрдВрдиреЗ рдпрд╣ рднреА рдкреБрд╖реНрдЯрд┐ рдХреА рдХрд┐ git checkout f2246df~ рд╕реЗ рднрд╡рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЬреЛ рдЙрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИред

рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдЙрд╕ рдЬрдЧрд╣ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ рднреА рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдЙрдкрдирд╛рдо: рдирд╛рдо рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛

@ krader1961 : рдпрд╣ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ @floam рдиреЗ рджреЗрдЦрд╛: рдЙрдирдХреЗ рд╕рд╛рде рдмрд╕ рдЪрд░ рд╡рд╛рд▓реЗ рдЙрджреНрдзрд░рдг рдПрдХ рдЦрд╛рд▓реА рддрд░реНрдХ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рддреНрд░реБрдЯрд┐ рддрдм рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрддреА рд╣реИ рдЬрдм рдЙрдкрдирд╛рдо test -z "$name" рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

@ рдлрд╝рд╛рд╣реЛ , рд╣рд╛рдВ, рдореИрдВ рд╕рд┐рд░реНрдл рдЙрд╕ рдЙрд░реНрдл тАЛтАЛрдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдлрд▓рддрд╛ рдкрд░

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдбрд┐рдмрдЧ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдФрд░ рд╕рднреА isw...() рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ (рдЬреИрд╕реЗ, iswalnum() ) FreeBSD 12 рдкрд░ рдЙрди рдЖрдВрддрд░рд┐рдХ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рдХреЛ @zanchey рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╕реБрдЭрд╛рд╡ рдмреАрдПрд╕рдбреА рдХреА рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдЗрд╕реНрд╡рд╛рд▓реБрдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрдХрд╛рд░ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк BSD рдкрд░ UTF-8 рд▓реЛрдХреЗрд▓ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рджреЛрд╣рд░реЗ-рдЙрджреНрдзреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдВрджрд░ var рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

$ set wtf b
$ echo a "$wtf" c
a  c
$ echo "a $wtf c"
a b c
$ echo "a $wtf"
a
$ echo "$wtf c"
b c

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдбрдмрд▓-рдЙрджреНрдзрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрджрд░реНрдн рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдореЗрдВ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдЙрджрд╛рд╣рд░рдг LC_ALL = C рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВ рдЧрд▓рдд рдерд╛ рдЬрдм рдореИрдВрдиреЗ рдХреБрдЫ рдШрдВрдЯреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдХрд┐ iswalnum() рдиреЗ FreeBSD рдкрд░ рд╕рд╣реА рдЙрддреНрддрд░ рджрд┐рдпрд╛ред рдореБрдЭреЗ рдЧрд▓рддреА рд╕реЗ рдЙрд╕ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ setlocale("") рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред рдЙрди рдбрд┐рдмрдЧ рдкреНрд░рд┐рдВрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ 0xFDD0 рдкрд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ 32 рдХреЛрдб рдкреЙрдЗрдВрдЯ рдмреНрд▓реЙрдХ iswalnum() рдФрд░ iswgraph() рд╕рд╣реА рдореВрд▓реНрдп рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдлреНрд░реАрдмреАрдПрд╕рдбреА рдкрд░ рдЬреАрдПрдирдпреВ рдирд╣реАрдВред рджреВрд╕рд░реА рдУрд░, рдЬреАрдПрдирдпреВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ iswgraph() рд▓рд┐рдП

рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд░реИрдкрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХреА рдиреНрдпреВрдирддрдо рд░рд╛рд╢рд┐ рдФрд░ рдЕрдореВрд░реНрдд рдкрд░рддреЛрдВ рдХреА рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдпрд╣ FreeBSD рдмрдЧ рдЦреЛрд▓рд╛ рд╣реИред рд╣рдореЗрдВ рдЕрднреА рднреА рдЗрд╕ рдЯреВрдЯреЗ рд╣реБрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреИрдЯрд░реНрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ рдордЫрд▓реА рдХреЛрдб рдмреБрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП fish_wcswidth() рдмрдЬрд╛рдп wcswidth() ред рд╣рдордиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдПрдХ cppcheck рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ (_.cppcheck.rule_ рджреЗрдЦреЗрдВ)ред рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЗ isw...() рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ? рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдмреЗрд╣рддрд░ рдЙрдкрд╛рдп рд╣реИ?

рдкреБрдирд╢реНрдЪ, рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ "рдмрдЧ" рдХреЗ рдмрдЬрд╛рдп "рд╡реГрджреНрдзрд┐" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЙрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдмрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЫрд▓реА рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рдБ? рдирд╣реАрдВ? рдХрд┐рд╕реЗ рдкрдбрд╝реА рд╣реИ? :рдореБрд╕реНрдХреБрд░рд╛рдУ:

рдкреАрдкреАрдПрд╕, рдореИрдВрдиреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ iswalnum() рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ FreeBSD 12 рдкрд░ рдареАрдХ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░-рдЯрд╛рдЗрдо рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрджрд┐ рд╡реЗ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрд╕рдВрдЧрдд рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рддрднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВрдЧреЗред

рдореИрдВ autoconf рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдбрд┐рд╕реНрдЯреНрд░реЛрд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдПрдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕рд╣реА (рдпрд╛ рдЧрд▓рдд) рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдФрд░ рдлрд┐рд░ рдмрд╛рдж рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдлреНрд▓рд┐рдк рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, FreeBSD 10 рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдмрд╛рдЗрдирд░реА, рдЕрднреА рднреА FreeBSD 12. рдкрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдСрдЯреЛрдХреЙрдиреНрдлрд╝ рдЯреЗрд╕реНрдЯ рдкрд░ рд╣рдорд╛рд░реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рд╕реЗ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реЗ, рдкреНрд░рд╢реНрди рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдмреЗрд╣рдж рд╕рд╕реНрддреЗ рд╣реИрдВ рднрд▓реЗ рд╣реА рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди рдЫреЛрд░реЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рддреАрд╕рд░рд╛, рд╣рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд░реЗрдЧрд╛ рдХрд┐ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣рдорд╛рд░реЗ рдЖрдВрддрд░рд┐рдХ рд░рд╛рдЬреНрдп рдореЗрдВ рд╣рдорд╛рд░реЗ рдЬрд╛рджреБрдИ рдЖрдВрддрд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдХреЛрдб рдкреЙрдЗрдВрдЯ (рдЬреЛ рдХрд┐ рдореЗрд░реЗ TODO рд╕реВрдЪреА рдореЗрдВ рд╣реИ) рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдерди рд▓рд┐рдЦрд╛ рдерд╛, рддреЛ рдореИрдВрдиреЗ рджреЛ рд╡рд┐рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдЙрд▓рдЯ рджрд┐рдпрд╛ рдерд╛:

рджреВрд╕рд░реА рдУрд░, рдЬреАрдПрдирдпреВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕реНрд╡рд╛рдЧреНрд░рд╛рдл () рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдирд┐рдЬреА рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП 0xF600 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдлреНрд░реАрдмреАрдПрд╕рдбреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╢реВрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдирд┐рдЬреА рдЙрдкрдпреЛрдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдпреВрдирд┐рдХреЛрдб рдПрдлрдПрдХреНрдпреВ рдХреЛрдб рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рд╕рдВрдмрджреНрдз рдЧреНрд▓рд┐рдлрд╝ рд╣реЛрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ (рдпрд╛рдиреА, iswgraph() рдПрдХ рдХреЛ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП) рд▓реЗрдХрд┐рди рдЕрд▓реНрдлрд╝рд╛рдиреНрдпреВрдореЗрд░рд┐рдХреНрд╕ рдирд╣реАрдВ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд, iswalnum() рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП рд╢реВрдиреНрдп)ред

рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ iswalnum () рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдСрдЯреЛрдХреЙрдиреНрдлрд╝ рдкрд░реАрдХреНрд╖рдг рд╣реЛрдЧрд╛ред

рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рд╕реЗ FreeBSD рдмрд╛рдЗрдирд░реА рдкреИрдХреЗрдЬ рд▓рдХреНрд╖реНрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рд╡рд╛рдж рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдпрд╣ рд╣рдорд╛рд░реЗ рд╕рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░-рдЯрд╛рдЗрдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЖрдзрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде @ krader1961 рдкрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕рд┐рд╕реНрдЯрдо-рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдордЫрд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ FreeBSD рдкрд░ рдПрдХ рд╕рд╛рдЭрд╛ рдкрд░рд┐рд╡рд╛рдж рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ:

$ ldd fish
fish:
        libncurses.so.8 => /lib/libncurses.so.8 (0x800948000)
        libthr.so.3 => /lib/libthr.so.3 (0x800b9c000)
        libc++.so.1 => /usr/lib/libc++.so.1 (0x800dc3000)
        libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x801082000)
        libm.so.5 => /lib/libm.so.5 (0x8012a0000)
        libc.so.7 => /lib/libc.so.7 (0x8014cb000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x801885000)

рдХреНрдпрд╛ рдЖрдк 100% рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рд▓реЛрдХрд▓ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд┐рдмрд╛рд╕ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓ рдЬрд╛рдПрдЧреА? рдореЗрд░реЗ рдкрд╛рд╕ рдЙрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рди рддреЛ рд╕рдордп рд╣реИ рдФрд░ рди рд╣реА рдЭреБрдХрд╛рд╡ред рдореИрдВ рдмрд▓реНрдХрд┐ рд░реВрдврд╝рд┐рд╡рд╛рджреА рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░рд╛ рдлрд┐рдХреНрд╕ рдордЫрд▓реА рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдХреНрдпрд╛ рдЖрдк 100% рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рд▓реЛрдХрд▓ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд┐рдмрд╛рд╕ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓ рдЬрд╛рдПрдЧреА?

"рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ"ред

"рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ"

рдирд┐рд╢реНрдЪрд┐рдд рд╣реА рдпрд╣ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреВрдЯреА рд╣реБрдИ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП fish_wcswidth() рдФрд░ рд╕рдорд╛рди рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИрдВред

рдмрдЧ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдЙрдкрдХрд░рдг рдореЗрдВ рд╣реИ рдЬреЛ ctype рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЗрд▓реБрдореЛрд╕ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╣реБрдЖред рдпрд╣рд╛рдБ DF рдкрд░ рдлрд┐рдХреНрд╕реНрдб:

https://github.com/DragonFlyBSD/DragonFlyBSD/commit/07ed7d329a83714ec268e2f3ce026bba5a1ac5c2

@jrmarino : рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдУрдПрд╕ рдореЗрдВ рдХрдм рдЖрдПрдЧрд╛? рдХреНрдпрд╛ DFs рдкрд░рд┐рд╡рд░реНрддрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ?

FreeBSD рдХреЗ рд╕рд╛рде-рд╕рд╛рде https://svnweb.freebsd.org/base?view=revision&revision=308282 рдкрд░ рдлрд┐рдХреНрд╕реНрдб

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВрдиреЗ рдЕрднреА FreeBSD 11.0-RELEASE-p1 рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдЪ рдХрдм рдФрд░ рдХрдм FreeBSD 11.0-RELEASE рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реЛрдЧрд╛?

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдЧрд┐рдЯ рдмрдЧ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдордЫрд▓реА рдореЗрдВ рдЗрд╕ рдмрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд░ рдЖрдкрдХреЛ рдЕрднреА рднреА рдмреАрдПрд╕рдбреА рдкрд░ рдЧрд┐рдЯ рд╣реЗрдб рд╕реЗ рдордЫрд▓рд┐рдпреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ рддреЛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВред рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдордЫрд▓реА 2.3.1 рдпрд╛ рдХрд┐рд╕реА рднреА рдкрд╣рд▓реЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЧрд╛рдореА 2.4.0 рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣реЛрдЧрд╛ред

рдкрд░рд┐рд╡рд░реНрддрди рдмрд▓реНрдХрд┐ рд╕реНрд╡-рдирд┐рд╣рд┐рдд рд╣реИ - рд╡рд╣рд╛рдБ рдХрд┐рд╕реА рднреА рдЕрдиреБрдЪрд░ рдХреЗ рд▓рд┐рдП рдмреИрдХрдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВред
https://reviews.freebsd.org/D8148

рдорд╣рд╛рдиред

@ рд╢рдиреИрд╡рд╛рд░ 1 рдорд╣реАрдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рд╡рд┐рд▓реАрди рд╣реЛ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдИ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рди рд╣реЛ, рдПрдХ рдмрд╛рд░ рдпрд╣ рдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рдиреЗ рдкрд░ рдореИрдВ 11.0-RELEASE рдХреЗ рд▓рд┐рдП рдЗрд░реЗрдЯрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рдореЗрдВ рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ +

FreeBSD 11.0-RELEASE-p1 рдкрд░ git рд╕реЗ рдордЫрд▓реА рд╕рдВрдХрд▓рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

sudo pkg remove fish
sudo pkg install autoconf  gmake
git clone [email protected]:fish-shell/fish-shell.git
cd fish-shell
autoconf
./configure
gmake
sudo gmake install

рдлрд┐рд░ рдЕрдкрдиреЗ рд╢реЗрд▓ рдХреЛ рдордЫрд▓реА рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП /usr/local/bin/fish /etc/shells рдФрд░ chsh -s fish рдЪрд▓рд╛рдПрдБред

рддреЛ рдореИрдВ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдирд╣реАрдВ рдерд╛ред рдЖрдк рд╕рднреА рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдореБрдЭреЗ рдкрд╛рдЧрд▓ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

thomcc picture thomcc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gawells picture gawells  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

krader1961 picture krader1961  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ismay picture ismay  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

krader1961 picture krader1961  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ