Fish-shell: ๋ฌผ๊ณ ๊ธฐ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

์— ๋งŒ๋“  2017๋…„ 05์›” 31์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: fish-shell/fish-shell

๋ฌผ๊ณ ๊ธฐ ๋ฒ„์ „: 2.5.0
์šฐ๋ถ„ํˆฌ 16.04 Linux limebox 4.4.0-78-generic #99-Ubuntu SMP Thu Apr 27 15:29:09 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

๋‚ด๊ฐ€ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ค ๋•Œ ์•ˆ๋…•ํ•˜์„ธ์š”, ์ƒ์„  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ ํ•  ์ˆ˜์—†๋Š” ๊ฒƒ echo "echo test" > script.fish ์‹คํ–‰ fish ./script.fish : ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์˜ ๊ฒฐ๊ณผ ./script.fish: No such file or directory .

์–ด๋–ค ์ด์œ ๋กœ sh -c 'env HOME=$(mktemp -d) fish' ์™€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

link/.config/fish $ tree
.
โ”œโ”€โ”€ completions
โ”‚ย ย  โ”œโ”€โ”€ fisher.fish
โ”‚ย ย  โ”œโ”€โ”€ get.fish -> /home/limeth/.config/fisherman/get/completions/get.fish
โ”‚ย ย  โ””โ”€โ”€ git.fish -> /home/limeth/.config/fisherman/git-flow/completions/git.fish
โ”œโ”€โ”€ conf.d
โ”‚ย ย  โ””โ”€โ”€ git-flow.init.fish -> /home/limeth/.config/fisherman/git-flow/init.fish
โ”œโ”€โ”€ config.fish
โ”œโ”€โ”€ fish_colors
โ”œโ”€โ”€ fishd.limebox
โ”œโ”€โ”€ fishfile
โ”œโ”€โ”€ fish_history
โ”œโ”€โ”€ fish_read_history
โ””โ”€โ”€ functions
    โ”œโ”€โ”€ cl.fish
    โ”œโ”€โ”€ fisher.fish
    โ”œโ”€โ”€ fish_greeting.fish -> /home/limeth/.config/fisherman/bobthefish/fish_greeting.fish
    โ”œโ”€โ”€ fish_mode_prompt.fish -> /home/limeth/.config/fisherman/bobthefish/fish_mode_prompt.fish
    โ”œโ”€โ”€ fish_prompt.fish -> /home/limeth/.config/fisherman/bobthefish/fish_prompt.fish
    โ”œโ”€โ”€ fish_right_prompt.fish -> /home/limeth/.config/fisherman/bobthefish/fish_right_prompt.fish
    โ”œโ”€โ”€ fish_title.fish -> /home/limeth/.config/fisherman/bobthefish/fish_title.fish
    โ”œโ”€โ”€ fish_user_key_bindings.fish
    โ”œโ”€โ”€ fzf_key_bindings.fish -> /home/limeth/.fzf/shell/key-bindings.fish
    โ”œโ”€โ”€ get.fish -> /home/limeth/.config/fisherman/get/functions/get.fish
    โ”œโ”€โ”€ getopts.fish -> /home/limeth/.config/fisherman/getopts/getopts.fish
    โ””โ”€โ”€ set_color_custom.fish -> /home/limeth/.config/fisherman/jellyfish/functions/set_color_custom.fish

3 directories, 22 files
$ cat config.fish
# Source dotfiles scripts
source ~/.dotfiles/bin/source.fish

# Enable terminal colors
set -x TERM "xterm-256color"

# Vi mode
# Automatically enable Vi mode in `~/.config/fish/functions/fish_user_key_bindings.fish`
set -g theme_display_vi yes

~/.dotfiles/bin/source.fish ๋งํฌ: https://gitlab.com/Limeth/dotfiles/blob/master/bin/source.fish

๋‚ด๊ฐ€ ๋ฌด์—‡์„ ์ฐพ์•„์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋ชจ๋“  ์กฐ์–ธ์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋งž์Šต๋‹ˆ๋‹ค. source.fish ๋Š” cd ~ ๋๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚˜์œ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ์…ธ์—๋Š” ์ด๋ฏธ PWD๊ฐ€ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ฌผ๊ณ ๊ธฐ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ PWD๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๋ฐ ํ•ฉ๋‹นํ•œ ์ด์œ ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๋Œ€ํ™”ํ˜• ์…ธ๋กœ ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

if status is-interactive
    cd ~
end

๋ชจ๋“  3 ๋Œ“๊ธ€

fish ./script.fish๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ./script.fish: ํ•ด๋‹น ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ตฌ์„ฑ์—์„œ cd ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ํŒŒ์ผ์„ ์‹คํ–‰ํ•ด ๋ณด๊ณ  ์‹คํŒจํ•˜๋ฉด echo $PWD; fish -c 'echo $PWD' . ๋‘ ๊ฐ€์ง€๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฑฐ์˜€๋‹ค!

$ echo $PWD
/tmp
$ fish -c "echo \$PWD"
/home/limeth

๋งค์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! :)

๋งž์Šต๋‹ˆ๋‹ค. source.fish ๋Š” cd ~ ๋๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚˜์œ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ์…ธ์—๋Š” ์ด๋ฏธ PWD๊ฐ€ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ฌผ๊ณ ๊ธฐ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ PWD๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๋ฐ ํ•ฉ๋‹นํ•œ ์ด์œ ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๋Œ€ํ™”ํ˜• ์…ธ๋กœ ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

if status is-interactive
    cd ~
end
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰