Я искал вокруг, но не смог найти ничего убедительного. Есть ли разница между командой alias в zsh и командой alias в bash? Если нет, значит ли это, что я могу разделить псевдонимы между двумя оболочками и ожидать, что они будут работать так, как я хотел?
9
Синтаксис
alias
команды одинаков во всех оболочках в стиле Борна. Таким образом , вы можете поделиться ими через~/.zshrc
,~/.bashrc
,~/.kshrc
,~/.shrc
, до тех пор , как они имеют смысл во всех оболочках.То же самое относится к определениям переменных и определениям функций, если вы используете подмножество синтаксиса, которое поддерживается во всех оболочках.
Если вы не используете версии zsh старше 4.0, вы можете поместить все свои независимые от оболочки определения в файл с именем (скажем)
~/.common.rc.sh
, где первая строкаЭто говорит zsh ожидать sh совместимый синтаксис только в этом файле. Тогда источник, файл около начала
~/.bashrc
,~/.bashrc
,~/.kshrc
и так далее.Это в основном то, что я делаю. Например, у меня есть несколько сложного код , который генерирует псевдоним
ls
с моими любимыми вариантами в зависимости от того, что доступно (--color
,-G
,-F
и т.д.); это не зависит от оболочки, так что входит.common.rc.sh
. У меня также есть зависимые от оболочки псевдонимы, какalias zcp='zmv -C'
это входит.zshrc
.источник
/bin/sh
шебанг вверху моего файла псевдонимов, будет ли он работать так, как я предназначаю для всех оболочек?#!
строку: это не отдельный скрипт, его можно получить только из другого скрипта.#!
не меняет поведение оболочки в любом случае.alias
обрабатывает аргумент, начинающийся с+
представления опции, как это-
было бы, поэтомуalias +=something
должен быть записан какalias -- +=something
в zsh. Не думай, что этоemulate
меняет.~/.shrc
поскольку Bourne Shell имеет самую мощную реализацию псевдонимов, ноzsh
использует несовместимые имена опций.alias -g
создает постоянный псевдоним в$HOME/.globals
Bourne Shell. Совместное использование определений псевдонимов безопасно только при условии, что вы используете не больше, чем функции POSIX.zsh
salias
допускает глобальные псевдонимы, тогда какbash
s раскрывается только в начале строки.В
zsh
:Затем вы можете сделать:
Смотрите здесь список полезных глобальных псевдонимов.
источник