Назад | Перейти на главную страницу

Как мне написать сценарий bash, который устанавливает псевдонимы для родительской оболочки?

Я пытаюсь написать сценарий, который установит псевдонимы для моей оболочки bash, но я не хочу source это автоматически в .bashrc - Мне нужны псевдонимы в подмножестве моих терминалов.

Это возможно alias команда в сценарии и работает ли команда с псевдонимом для оболочки, из которой был запущен сценарий?

Желаемый функционал:

$ alias
# ... no output here
$ ./my-script
$ alias
alias foo='bar'
alias alpha='beta'
...

Псевдонимы являются частными для оболочек, в которых они созданы. Их нельзя ни экспортировать, ни получить к ним доступ из родительской оболочки.

Самое простое решение - разбить псевдонимы в отдельный файл, как вы предлагаете, а затем либо создать этот файл вручную, либо добавить функцию в свой .bashrc, который будет их источником при вызове.

function extra-aliases {
     . /path/to/file/containing/additional/aliases
}

Нет. Псевдонимы являются частными для оболочки и подоболочки.

Нет.

Но чтобы предоставить «решение», хотя я не знаю, хотите ли вы этого.

Пытаться:

# alias
... nothing
# . ./myscript.sh
# alias
alias ls='ls -laR'

Обратите внимание . перед ./myscript.sh. Это source.

Или почему бы не сделать из него псевдоним (в .bashrc):

alias mkalias="alias ls='ls -laR'; alias ll='ls -l'"