Здравствуйте! Я собрал из сорцов приложение. Теперь, чтобы запускать его мне нужно всегда переходить в папку этого приложения, затем в подпапку bin и запускать его так ./some_app. А я хочу чтобы можно было запускать это приложение из любого места и без добавочного ./. Например открыл консоль, вбил some_app и все.
Интересует как сделать это для текущего пользователя и для всех.
PS. Я новенький в Linux. Перехожу с Windows.
"Глобальный" доступ к приложению из командной строки
Если в двух словах — http://www.codecoffee.com/tipsforlinux/articles/11.html
P.S. Поместите своё приложение в один из каталогов из списка выданного командой
echo $PATH
...либо добавьте свой каталог в пути поиска.
P.S. Устанавливать программы в обход менеджера программного обеспечения своего дистрибутива — быстрая возможность превратить систему в «помойку».
Так, кажется я понял в какую сторону копать. Спасибо!
У меня получилось скопировать бинарник в каталог /usr/bin и он стал доступен глобально. А вот добавить путь к бинарникам в свой bush_profile у меня не получилось. Во первых потому что в ubuntu нет такого файла, а во вторых я еще не разобрался с командой export.
Почему то когда я вызываю команду export PATH=/home/boniface/programs/myapp/bin все перестает работать. Даже базовые команды, например clear. Не подскажете, как правильно прописать команду добавления в текущий профайл?
Да, еще нужно чтобы после перезагрузки машины все настройки были сохранены.
Если нужен доступ всего к одному файлу, то мне кажется проще сделать символическую ссылку
ln -s /path/soft /bin/soft
Могу ошибаться. ~/.bash_profile не выполняется при логине в систему. Нужно добавлять в ~/.bashrc или ~/.profile
~/.bashrc есть. А как туда добавить такой путь /home/boniface/programs/myapp/bin не приведете примерчик?
не приведете примерчик?
export PATH=$PATH:/home/boniface/programs/myapp/binВ конец одного из файлов. Работать будет, но не факт что правильно лезть в эти файлы.
вот добавить путь к бинарникам в свой bush_profile у меня не получилось. Во первых потому что в ubuntu нет такого файла
Во-первых, этот файл называется .bash_profile (точка впереди);
во-вторых, в Ubuntu вроде бы по-умолчанию другая оболочка, не bash.
Почему то когда я вызываю команду export PATH=/home/boniface/programs/myapp/bin все перестает работать.
Этой командой вы переписываете существующий PATH. Попробуйте добавить что-то вроде:
PATH=$PATH:$HOME/bin
export PATH
Попробовал выполнить следующую команду
export PATH=$PATH:/home/boniface/programs/myapp/bin
Все отлично работает! Приложения доступны без ./ в любом месте. Но после закрытия терминала эта конфигурация слетает.
Я начал искать где в системе содержатся значения переменной PATH. Нашел в etc/environment. Добавил свой путь в файл environment. Сделал log out. После этого приложения из моей папки доступны глобально из любой директории и эти настройки не слетают после перезапуска системы.
Но мне такой подход не очень нравиться. Так как нужны привелегии администратора. Не подскажете как сделать так, чтобы при каждом входе в систему автоматически добавлялся путь в переменные окружения пользователя, а не глобально. Гуглил, но так и не понял, куда пишутся PATH в домашней директории пользователя. Смотрел .profile, bashrc но так ничего не понял.
Выполните
cp /home/boniface/.bashrc /home/boniface/bashrc_back
echo "export PATH=\$PATH:/home/boniface/programs/myapp/bin" >> /home/boniface/.bashrc
Чтоб наверняка ;)
~/.bash_profile
# /etc/skel/.bash_profile
# This file is sourced by bash for login shells. The following line
# runs your .bashrc and is recommended by the bash info pages.
[[ -f ~/.bashrc ]] && . ~/.bashrc
~/.bashrc
# /etc/skel/.bashrc
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output. So make sure this doesn't display
# anything or bad things will happen !
# Test for an interactive shell. There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
# Shell is non-interactive. Be done now!
return
fi
# Put your fun stuff here.
Создайте эти два файла, если их нет, затем:
echo "export PATH=$PATH:/home/boniface/programs/myapp/bin" >> ~/.bashrc
Разумеется, если у вас Bash, иначе — редактируйте аналогичные файлы оболочек.
Разумеется, если у вас Bash, иначе — редактируйте аналогичные файлы оболочек.
А не универсальнее ли добавлять в ~/.profile ?
Lupo Alberto.
символ $ лучше экранировать экранировать. Иначе все пути будут записаны фиксированно.
символ $ лучше экранировать экранировать. Иначе все пути будут записаны фиксированно.
Ну да, кавычки попутал :(
А не универсальнее ли добавлять в ~/.profile ?
Наверное, так.