LinuxForum.Fans
Тема

"Глобальный" доступ к приложению из командной строки

Автор: Boniface 13 сообщений 2278 просмотров
#351866

Здравствуйте! Я собрал из сорцов приложение. Теперь, чтобы запускать его мне нужно всегда переходить в папку этого приложения, затем в подпапку bin и запускать его так ./some_app. А я хочу чтобы можно было запускать это приложение из любого места и без добавочного ./. Например открыл консоль, вбил some_app и все.

Интересует как сделать это для текущего пользователя и для всех.

PS. Я новенький в Linux. Перехожу с Windows.

#351867

Если в двух словах — http://www.codecoffee.com/tipsforlinux/articles/11.html
P.S. Поместите своё приложение в один из каталогов из списка выданного командой

text

echo $PATH

...либо добавьте свой каталог в пути поиска.

P.S. Устанавливать программы в обход менеджера программного обеспечения своего дистрибутива — быстрая возможность превратить систему в «помойку».

#351875

Так, кажется я понял в какую сторону копать. Спасибо!

У меня получилось скопировать бинарник в каталог /usr/bin и он стал доступен глобально. А вот добавить путь к бинарникам в свой bush_profile у меня не получилось. Во первых потому что в ubuntu нет такого файла, а во вторых я еще не разобрался с командой export.

Почему то когда я вызываю команду export PATH=/home/boniface/programs/myapp/bin все перестает работать. Даже базовые команды, например clear. Не подскажете, как правильно прописать команду добавления в текущий профайл?

Да, еще нужно чтобы после перезагрузки машины все настройки были сохранены.

#351877

Если нужен доступ всего к одному файлу, то мне кажется проще сделать символическую ссылку

text

ln -s /path/soft /bin/soft

Могу ошибаться. ~/.bash_profile не выполняется при логине в систему. Нужно добавлять в ~/.bashrc или ~/.profile

#351878

~/.bashrc есть. А как туда добавить такой путь /home/boniface/programs/myapp/bin не приведете примерчик?

#351880
"Boniface" написал:
не приведете примерчик?
text
export PATH=$PATH:/home/boniface/programs/myapp/bin

В конец одного из файлов. Работать будет, но не факт что правильно лезть в эти файлы.

#351881
"Boniface" написал:
вот добавить путь к бинарникам в свой bush_profile у меня не получилось. Во первых потому что в ubuntu нет такого файла

Во-первых, этот файл называется .bash_profile (точка впереди);
во-вторых, в Ubuntu вроде бы по-умолчанию другая оболочка, не bash.

"Boniface" написал:
Почему то когда я вызываю команду export PATH=/home/boniface/programs/myapp/bin все перестает работать.

Этой командой вы переписываете существующий PATH. Попробуйте добавить что-то вроде:

text

PATH=$PATH:$HOME/bin
export PATH
#352630

Попробовал выполнить следующую команду

export PATH=$PATH:/home/boniface/programs/myapp/bin

Все отлично работает! Приложения доступны без ./ в любом месте. Но после закрытия терминала эта конфигурация слетает.
Я начал искать где в системе содержатся значения переменной PATH. Нашел в etc/environment. Добавил свой путь в файл environment. Сделал log out. После этого приложения из моей папки доступны глобально из любой директории и эти настройки не слетают после перезапуска системы.

Но мне такой подход не очень нравиться. Так как нужны привелегии администратора. Не подскажете как сделать так, чтобы при каждом входе в систему автоматически добавлялся путь в переменные окружения пользователя, а не глобально. Гуглил, но так и не понял, куда пишутся PATH в домашней директории пользователя. Смотрел .profile, bashrc но так ничего не понял.

#352633

Выполните

text

cp /home/boniface/.bashrc /home/boniface/bashrc_back
echo "export PATH=\$PATH:/home/boniface/programs/myapp/bin" >> /home/boniface/.bashrc
#352634

Чтоб наверняка ;)
~/.bash_profile

text

# /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

text

# /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.

Создайте эти два файла, если их нет, затем:

text

echo "export PATH=$PATH:/home/boniface/programs/myapp/bin" >> ~/.bashrc

Разумеется, если у вас Bash, иначе — редактируйте аналогичные файлы оболочек.

#352636
"Lupo Alberto" написал:
Разумеется, если у вас Bash, иначе — редактируйте аналогичные файлы оболочек.

А не универсальнее ли добавлять в ~/.profile ?

#352637

Lupo Alberto.
символ $ лучше экранировать экранировать. Иначе все пути будут записаны фиксированно.

#352642
"marikk" написал:
символ $ лучше экранировать экранировать. Иначе все пути будут записаны фиксированно.

Ну да, кавычки попутал :(

"-=Serj=-" написал:
А не универсальнее ли добавлять в ~/.profile ?

Наверное, так.

Войдите или зарегистрируйтесь, чтобы ответить.