1

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

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

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

2 (28.11.2013 15:49:34 отредактировано Lupo Alberto)

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

echo $PATH

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

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

Был, был и весь вышел...

3

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

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

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

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

4 (28.11.2013 17:05:40 отредактировано marikk)

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

ln -s /path/soft /bin/soft

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

5 (28.11.2013 17:02:22 отредактировано Boniface)

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

6

Boniface пишет:

не приведете примерчик?

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

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

7

Boniface пишет:

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

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

Boniface пишет:

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

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

PATH=$PATH:$HOME/bin
export PATH
Был, был и весь вышел...

8

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

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

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

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

9 (03.12.2013 14:09:01 отредактировано marikk)

Выполните

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

10

Чтоб наверняка bx
~/.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, иначе — редактируйте аналогичные файлы оболочек.

Был, был и весь вышел...

11

Lupo Alberto пишет:

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

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

Да, у меня Ubuntu.
Нет, не глючит.

12

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

13

marikk пишет:

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

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

-=Serj=- пишет:

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

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

Был, был и весь вышел...