Я не понимаю, почему вы начинаете бить, а не рыбу. Если рыба — это оболочка, которую вы хотите использовать, то почему бы не установить ее в качестве оболочки по умолчанию? «chsh -s /usr/local/bin/fish», затем в редких случаях, когда вы хотите/нужно запустить команду bash, вы просто набираете «bash», которая бросает вас в оболочку bash, а затем, когда вы закончите, вы набираете «exit», чтобы вернуться к рыбе.
Подробнее об этом можно узнать на странице "https://github.com/fish-shell/fish-shell#switching-to-fish"
Разница обусловлена некоторыми особенностями цитирования оболочки.
Если вы выполните любой из этих вариантов (это эквивалентные способы цитирования в shell),
git log --pretty=format:'%ad %s%d'
git log '--pretty=format:%ad %s%d'
git log --pretty=format:%ad\ %s%d
git log --pretty=form'at:%ad %'s%d
git log --pretty=format:%ad" "%s%d
git log --pretty=format:"%ad %s%d"
git
получит два аргумента, первый из которых будет log
, а второй --pretty=format:%ad %s%d
.
При выполнении
SIMPLE='--pretty=format:"%ad %s%d"'
переменная SIMPLE
будет иметь значение --pretty=format:"%ad %s%d"
, включая двойные кавычки.
Теперь, если мы находимся в zsh и выполняем
git log $SIMPLE
или в bash
git log "$SIMPLE"
git
, второй аргумент будет выглядеть как --pretty=format:"%ad %s%d"
. (Если я выполню git log $SIMPLE
в bash, я получу ошибку, потому что git
получает три аргумента: log
, --pretty=format:"%ad
and %s%d"
).
Поэтому внутри переменной внутренние кавычки не нужны (за исключением случаев, когда вы хотите передать ее в eval
).