Новый псевдоним недоступен после;

Вы считали попытку PlayOnLinux? Это может заботиться обо всем этом для Вас, и даже можно настроить некоторые типы файлов, которые будут открыты винными программами.

9
02.11.2015, 15:41
3 ответа

Синтаксис псевдонима, который вы используете, не подходит для оболочки POSIX, для оболочки POSIX необходимо использовать:

alias name='replacement'

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

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

Если псевдоним появится в следующей командной строке, он будет работать.

9
27.01.2020, 20:06

Такое поведение предназначено и определяется POSIX в разделе Подстановка псевдонима .

Псевдоним был заменен сразу после того, как оболочка выполнила Распознавание токена и до применения каких-либо Грамматических правил . В то время, когда вы вызывали псевдоним <имя> , команда псевдоним не была выполнена.

5
27.01.2020, 20:06

Если вам действительно нужен один -лайнер , то вы можете использовать функцию вместо псевдонима .

. вы делаете псевдоним py3, но он работает только во второй строке:

$ alias py3=python3; py3 -c 'print("hello, world")'

Command 'py3' not found, did you mean:

  command 'py' from deb pythonpy
  command 'hy3' from deb python3-hy
  command 'pyp' from deb pyp

Try: sudo apt install <deb name>

$ py3 -c 'print("hello, world")'
hello, world

Вы можете определить py3как functionвместоalias:

$ function py3() { python3 "$@"; }; py3 -c 'print("hello, world")'
hello, world

Или export -fперед использованием в дочернем процессе позже:

$ function py3() { python3 "$@"; }; export -f py3; bash -c "py3 -c 'print("'"hello, world"'")'"
hello, world

И если вы понимаете разницу между переменной и псевдонимом/функцией , то вы также можете использовать переменную :

$ py3='python3'; $py3 -c 'print("hello, world")'
hello, world

и не надоexport -f:

$ py3='python3'; bash -c "$py3 -c 'print("'"hello, world"'")'"
hello, world
-1
04.06.2020, 13:27

Теги

Похожие вопросы