Чтобы ускорить разработку под Android, я отредактировал свой ~/.bashrc
, добавив несколько путей к PATH
:
export PATH=${PATH}:/opt/android-sdk/tools:/opt/android-sdk/platform-tools
Это прекрасно работает из командной строки (я могу просто напечатать android
и, независимо от того, где я нахожусь, Android SDK и AVD Manager будут запускаться очень хорошо.
Однако, если я попытаюсь ввести android
в Alt + F2 kbd > диалоговое окно (Запустить приложение), выдает следующую ошибку:
Не удалось открыть файл местоположения: /// home / felix / android '
Ошибка при указании файла '/ home / felix / android': такого файла или каталога нет
blockquote>Почему это так? Что
PATH
используется в диалоговом окне «Запустить приложение»?
Я предполагаю, что bashrc
не читается Gnome, и зачем это нужно, поскольку это файл конфигурации для bash
.
Я определяю свой путь в ~/.profile
. Этот файл определенно читается средами Gnome и XFCE, а также другими. (Но это только для чтения при входе в систему, поэтому вы должны выйти из системы и вернуться к любым изменениям для вступления в силу!)
~/.bashrc
включено в ~/.profile
по умолчанию. Каталог ~/bin
также добавляется в PATH
по умолчанию. Создайте каталог ~/bin
и добавьте символические ссылки (ln -s
) в приложения, которые вы собираетесь использовать, или измените свой ~/.bashrc
.
Содержимое по умолчанию упомянутых файлов можно найти в /etc/skel
- используется при создании новой учетной записи и их домашних каталогов.
У меня была такая же проблема с Linux Mint (Cinnamon 2.8.8), и я никак не мог заставить ее работать с обычными исправлениями (используя .profile
, изменив Xsession
shebang на /bin/sh -l
).
Проблема в том, что /bin/sh
, который обычно является символической ссылкой на /bin/dash
, читает ~/.profile
, если это оболочка входа в систему (то есть, учитывая опцию -l
).
Вы можете проверить это с помощью strace:
$ strace -e open dash
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/dev/tty", O_RDWR) = 3
$ ^D
+++ exited with 0 +++
$ strace -e open dash -l
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/dev/tty", O_RDWR) = 3
open("/etc/profile", O_RDONLY) = 3
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=12260, si_status=0, si_utime=0, si_stime=0} ---
open("/etc/profile.d/Z97-byobu.sh", O_RDONLY) = 3
open("/etc/profile.d/bash_completion.sh", O_RDONLY) = 3
open("/etc/profile.d/vte.sh", O_RDONLY) = 3
open("/home/elias/.profile", O_RDONLY) = 3
$ ^D
+++ exited with 0 +++
Я не мог понять, какой скрипт изменить (пробовал кучу из них в / etc / X11 и / etc / mdm), но не повезло .
Так что я бросил полотенце и изменил /bin/sh
, указав /bin/bash
вместо /bin/dash
, и теперь он работает. :)