Попытайтесь делать это:
$ arrayA=(1 2 3)
$ x=A
$ var=array$x[@]
$ echo ${!var}
1 2 3
man bash
(расширение параметра):${parameter} The value of parameter is substituted. The braces are required when parameter is a positional parameter with more than one
цифра, или когда параметр сопровождается символом, который не должен быть интерпретирован как часть его имени.
*, Если первый символ параметра является восклицательным знаком (!), уровень переменной абстракции представлен. Bash использует значение переменной, сформированной из остальной части параметра как название переменной; эта переменная затем расширена, и то значение используется в остальной части замены, а не значения самого параметра. Это известно как косвенное расширение. * Исключениями к этому являются расширения $ {! prefix*} и $ {! имя} описанный ниже. Восклицательный знак должен сразу следовать за левой фигурной скобкой для представления косвенности.
Вы получаете эту ошибку если ~/.emacs.d
существует, но не каталог, читаемый Вашим пользователем. От частичного вывода ls -la ~/.emacs.d
Вы дали, кажется, что Вам так или иначе удалось получить a .emacs.d
каталог в корневом каталоге Вашего пользователя это принадлежит корню и не имеет никакого разрешения для Вашего пользователя.
Вы могли попробовать (как корень)
chown -R user:yourgroup /home/user/.emacs.d
где user
Ваше имя пользователя и yourgroup
основная группа Вашего пользователя.
Если у Вас есть файл, названный ~/.emacs.d и emacs, где попытаться посмотреть в каталоге, названном ~/.emacs.d/для имена файлов init.el, он встретился бы с ошибкой, такой как это. Если у Вас есть файл, названный ~/.emacs.d, возможно, Вы могли бы переместить его в init.el и поместить его в имена каталогов ~/.emacs.d
Если не затем могла бы быть строка в Вашем наследии emacs файл конфигурации ~/.emacs, который пытается создать этот каталог.
Причиной может быть запуск emacs от имени пользователя root ("sudo emacs ...") перед его запуском от имени вошедшего в систему пользователя. Я сделал это при настройке своей системы и столкнулся с той же проблемой. Emacs, конечно, создает каталог .emacs.d, если он не существует, и если emacs работает от имени пользователя root, каталог будет создан с пользователем root в качестве владельца.
То же самое относится и к файлу .emacs - вы также можете проверить, кому принадлежит этот файл.
Как уже отмечалось, изменение прав владения с root на пользователя решает проблему.
M-x report-emacs-bug
попросить более значимое сообщение об ошибке. В настоящий момент сообщение не полезно и на самом деле вводит в заблуждение. (Всего одно мнение.) – Drew 10.12.2013, 03:32