Проблема в создании псевдонима, получать странные сообщения

[Рецензенты: обратите внимание, что вопрос был полностью переписан после закрытых голосований.]

Недавно я обнаружил, как я могу определить псевдонимы для bash в ~/.bashrc.

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

Я добавил несколько псевдонимов bash к своему. Я пытался создать ярлыки, используя псевдоним, но мне не удалось, и каким-то образом мне удалось получить сообщение ниже каждый раз, когда я открываю новый терминал.

bash: alias: UIC: not found
bash: alias: =: not found
bash: alias: sudo openvpn --config ~/vpn/UIC-alopez78.ovpn: not found
bash: alias: mat: not found
bash: alias: =: not found
bash: alias: cd /home/alexisblopez/MATLAB/R2014a/bin/: not found
bash: alias: lab: not found
bash: alias: =: not found
bash: alias: ./matlab: not found
~$ 

Это сбивает с толку; это не говорит об ошибке, но потому что мои псевдонимы не работают,
Я думаю, что с ними что-то не так - я не знаю что!

2
задан 2 October 2014 в 20:56

2 ответа

Вероятно, Вы определили эти псевдоним в .bashrc файл:

alias UIC = 'sudo openvpn --config ~/vpn/UIC-alopez78.ovpn'
alias mat = 'cd /home/alexisblopez/MATLAB/R2014a/bin/'
alias lab = './matlab'

необходимо отредактировать .bashrc и удалить пространство прежде и после =:

alias UIC='sudo openvpn --config ~/vpn/UIC-alopez78.ovpn'
alias mat='cd /home/alexisblopez/MATLAB/R2014a/bin/'
alias lab='./matlab'

сохраняют Ваши изменения и работают source .bashrc

0
ответ дан 2 October 2014 в 20:56

Сообщения об ошибках выглядят интересными.
Строки

bash: alias: =: not found

это: bash дает нам сообщение, что это - встроенная команда, alias, дал ему сообщение, "не найденное" для чего-то названного "=".

Теперь, alias включен, и существует a = в месте, где это принято за команду. Для = чтобы рассматриваться как команду, это должно быть отдельное слово с пробелами.

И рассмотрение синтаксиса команды alias (см. help alias ниже), это неправильно: = должен использоваться без пробелов вокруг, как это:

alias foo='bar baz'

Так, идея состоит в том, что существуют определения псевдонима, которые имеют дополнительное пространство вокруг =, который разделяет один параметр командной строки alias в три аргумента.

Давайте сделаем эксперимент: мы можем копировать Ваше сообщение об ошибке как это?

$ alias mat = 'foo bar'
bash: alias: mat: not found
bash: alias: =: not found
bash: alias: foo bar: not found

Да!

Псевдоним встроенная команда пытается показать определения трех псевдонимов mat, =, и foo bar, согласно просьбе, и жалуется для не нахождения их.


Решение: читать help alias, найдите определения псевдонима и удалите пространство вокруг =.


$ help alias
alias: alias [-p] [name[=value] ... ]
    Define or display aliases.

    Without arguments, `alias' prints the list of aliases in the reusable
    form `alias NAME=VALUE' on standard output.

    Otherwise, an alias is defined for each NAME whose VALUE is given.
    A trailing space in VALUE causes the next word to be checked for
    alias substitution when the alias is expanded.

    Options:
      -p        Print all defined aliases in a reusable format

    Exit Status:
    alias returns true unless a NAME is supplied for which no alias has been
    defined.
1
ответ дан 2 October 2014 в 20:56

Другие вопросы по тегам:

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