bash alias с аргументами
мне нужно записать в .bashrc что то подобное:
alias myc='source env/bin/activate && python src/main.py <аргументы> && deactivate'
чтобы потом был возможен вызов скрипта таким образом:
$ myc -a status
Я пытался обернуть алиас в баш функцию и использовать "$@", но после непосредственно команды запуска вместо консоли я получал бесконечный инпут
$ myc -a status`
>
>
>
...
Как мне правильно сделать этот синоним?
Ответы (2 шт):
Алиасы не могут вставить аргументы в середину команды. Если вы зададите вашу команду как алиас alias myc='source env/bin/activate && python src/main.py && deactivate', то вызов myc -a status будет развёрнут как
source env/bin/activate && python src/main.py && deactivate -a status
Следовательно, вам нужна функция
function myc { . env/bin/activate && python main.py "$@"; deactivate; }
В этой функции аргументы будут переданы в main.py
Или скрипт
alias myc='/path/to/script'
В скрипте:
#!/bin/bash
source env/bin/activate && python src/main.py $@ && deactivate
Аналогичный вопрос на англ. SO