- Как добавить каталог в PATH в Linux
- How to Add a Directory to PATH in Linux
- В этой статье показано, как добавить каталоги в ваши $PATH системы Linux.
- Что есть $PATH в Linux
- Добавление каталога в ваш $PATH
- Вывод
- Как добавить путь к каталогу в переменную $PATH
- Просмотр текущих настроенных каталогов в $PATH
- Как временно добавить каталог в $PATH
- Как добавить каталог в $PATH на постоянной основе
- Как добавить каталог в PATH в Linux
- Что есть $PATH в Linux
- Добавление каталога в ваш $PATH
- Заключение
- Как добавить путь в path(sys.path) в python 3 в ubuntu 16.04 и сохранить?
- Python: Best way to add to sys.path relative to the current running script
- 12 Answers 12
Как добавить каталог в PATH в Linux
How to Add a Directory to PATH in Linux
В этой статье показано, как добавить каталоги в ваши $PATH системы Linux.
Когда вы вводите команду в командной строке, вы в основном говорите оболочке запустить исполняемый файл с заданным именем. В Linux эти исполняемые программы , такие как ls , find , file и другие, как правило , живут внутри несколько различных каталогов в вашей системе. Любой файл с разрешением на выполнение, хранящийся в этих каталогах, может быть запущен из любого места. Наиболее распространенные каталоги , которые содержат исполняемые программы /bin , /sbin , /usr/sbin , /usr/local/bin и /usr/local/sbin .
Но как оболочка узнает, в каких каталогах искать исполняемые программы или оболочка выполняет поиск по всей файловой системе?
Ответ прост. Когда вы вводите команду, оболочка ищет во всех каталогах, указанных в пользовательской $PATH переменной, исполняемый файл с таким именем.
Что есть $PATH в Linux
$PATH Переменная окружающей среды является двоеточиями список каталогов, сообщает оболочке , какие каталоги для поиска исполняемых файлов.
Чтобы проверить, какие каталоги у вас есть $PATH , вы можете использовать команду printenv или echo :
Вывод будет выглядеть примерно так:
Если у вас есть два исполняемых файла с одинаковым именем, расположенные в двух разных каталогах, оболочка запустит файл, который находится в каталоге, который стоит первым в $PATH .
Добавление каталога в ваш $PATH
Есть ситуации, когда вы можете захотеть добавить другие каталоги в $PATH переменную. Например, некоторые программы могут быть установлены в разных местах, или вы можете захотеть иметь выделенный каталог для ваших личных записей, но сможете запускать их без указания абсолютного пути к исполняемым файлам. Для этого вам просто нужно добавить каталог в свой $PATH .
Допустим, у вас есть каталог с именем, bin расположенный в вашем домашнем каталоге, в котором вы храните свои сценарии оболочки. Чтобы добавить каталог к вашему $PATH типу в:
Команда export экспортирует измененную переменную в дочерние среды процессов оболочки.
Теперь вы можете запускать свои скрипты, просто набрав имя исполняемого скрипта без указания полного пути к исполняемому файлу.
Однако это изменение носит временный характер и действует только в текущем сеансе оболочки.
Чтобы сделать изменение постоянным, вам нужно определить $PATH переменную в файлах конфигурации оболочки. В большинстве дистрибутивов Linux при запуске нового сеанса переменные среды считываются из следующих файлов:
Конфигурационные файлы глобальной оболочки, такие как /etc/environment и /etc/profile . Используйте этот файл, если вы хотите, чтобы новый каталог был добавлен всем системным пользователям $PATH .
Конфигурационные файлы для отдельных пользовательских оболочек. Например, если вы используете Bash, вы можете установить $PATH переменную в
/.bashrc файле, а если вы используете Zsh — имя файла
В этом примере мы установим переменную в
/.bashrc файле. Откройте файл в текстовом редакторе и добавьте в конце следующую строку:
Чтобы подтвердить, что каталог был успешно добавлен, напечатайте его значение $PATH , набрав:
Вывод
Добавить новые каталоги в вашу пользовательскую или глобальную $PATH переменную довольно просто. Это позволяет выполнять команды и сценарии, хранящиеся в нестандартных местах, без необходимости вводить полный путь к исполняемому файлу.
Те же инструкции применимы для любого дистрибутива Linux, включая Ubuntu, CentOS, RHEL, Debian и Linux Mint.
Источник
Как добавить путь к каталогу в переменную $PATH
Когда вы вводите команду в терминал Linux программа выполняется.
Обычно для выполнения пользовательской программы или скрипта нам нужно использовать полный путь к ней, например /path/to/script.sh или просто ./script.sh, если мы уже находимся в его постоянном каталоге.
В качестве альтернативы мы можем выполнять множество команд без указания путей, таких как например up, дата и т.д.
Причина, по которой нам не нужно указывать пути для некоторых команд, заключается в переменной $PATH.
Это переменная, которую можно настроить таким образам, чтобы указать нашей системе Linux, где искать определенные программы.
Таким образом, при вводе date в терминал Linux проверяет переменную $PATH, чтобы увидеть список каталогов для поиска программы.
В этом руководстве мы расммотрим, как добавить каталог в переменную $PATH на Linux.
Это позволит нам вызывать программу или скрипт из любой точки системы без необходимости указывать путь к месту, где мы их сохранили.
Далее покажем, как просматривать каталоги в $PATH и добавлять каталог временно или навсегда в переменную.
Просмотр текущих настроенных каталогов в $PATH
Просмотр текущих настроенных каталогов в $PATH
Просмотреть все каталоги, которые в настоящее время настроены в переменной $PATH вашей системы, очень просто.
Просто используйте команду echo вот таким образом:
Как видите, в $PATH уже хранится несколько разных каталогов.
Это как раз то, что позволяет нам запускать так много команд по умолчанию, не указывая их полное расположение в терминале.
Чтобы узнать, к какому каталогу принадлежит команда, вы можете использовать команду which.
Как временно добавить каталог в $PATH
Чтобы добавить каталог в $PATH для текущего сеанса, используйте следующий синтаксис.
В этом примере мы добавим каталог /bin/myscripts.
Как добавить каталог в $PATH на постоянной основе
Чтобы добавить каталог в $PATH навсегда, нам нужно отредактировать файл .bashrc пользователя, у которого вы хотите это дело изменить.
Используйте nano или ваш любимый текстовый редактор, чтобы открыть файл, хранящийся в домашнем каталоге.
Источник
Как добавить каталог в PATH в Linux
Но как оболочка узнает, в каких каталогах искать исполняемые программы или оболочка выполняет поиск по всей файловой системе?
Ответ прост. Когда вы вводите команду, оболочка ищет во всех каталогах, указанных в пользовательской переменной $PATH, исполняемый файл с таким именем.
В этой статье показано, как добавить каталоги в вашей переменной $PATH системы Linux.
Что есть $PATH в Linux
Переменная окружающей среды $PATH является двоеточиями список каталогов, сообщает оболочке, какие каталоги для поиска исполняемых файлов.
Чтобы проверить, какие каталоги у вас есть в переменной $PATH, вы можете использовать команду printenv или echo:
Вывод будет выглядеть примерно так:
Если у вас есть два исполняемых файла с одинаковым именем, расположенные в двух разных каталогах, оболочка запустит файл, который находится в каталоге, который стоит первым в $PATH.
Добавление каталога в ваш $PATH
Есть ситуации, когда вы можете захотеть добавить другие каталоги в переменную $PATH. Например, некоторые программы могут быть установлены в разных местах, или вы можете захотеть иметь выделенный каталог для ваших личных записей, но сможете запускать их без указания абсолютного пути к исполняемым файлам. Для этого вам просто нужно добавить каталог в свой $PATH.
Допустим, у вас есть каталог с именем bin, расположенный в вашем домашнем каталоге, в котором вы храните свои сценарии оболочки. Чтобы добавить каталог к вашей переменной $PATH:
Команда export экспортирует измененную переменную в дочерние среды процессов оболочки.
Теперь вы можете запускать ваши скрипты, просто набрав имя исполняемого скрипта без указания полного пути к исполняемому файлу.
Однако это изменение носит временный характер и действует только в текущем сеансе оболочки.
Чтобы сделать изменение постоянным, вам нужно определить переменную $PATH в файлах конфигурации оболочки. В большинстве дистрибутивов Linux при запуске нового сеанса переменные среды считываются из следующих файлов:
- Конфигурационные файлы глобальной оболочки, такие как /etc/environment и /etc/profile. Используйте этот файл, если вы хотите, чтобы новый каталог был добавлен всем системным пользователям $PATH.
- Конфигурационные файлы для отдельных пользовательских оболочек. Например, если вы используете Bash, вы можете установить переменную $PATH в файле
/.bashrc, а если вы используете Zsh – имя файла
В этом примере мы установим переменную в файле
/.bashrc. Откройте файл в текстовом редакторе и добавьте в конце следующую строку:
Сохраните файл и загрузите новое значение $PATH в текущий сеанс оболочки, используя команду source:
Чтобы подтвердить, что каталог был успешно добавлен, напечатайте его значение $PATH, набрав:
Заключение
Добавить новые каталоги в вашу пользовательскую или глобальную переменную $PATH довольно просто. Это позволяет выполнять команды и сценарии, хранящиеся в нестандартных местах, без необходимости вводить полный путь к исполняемому файлу.
Те же инструкции применимы для любого дистрибутива Linux, включая Ubuntu, CentOS, RHEL, Debian и Linux Mint.
Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Как добавить путь в path(sys.path) в python 3 в ubuntu 16.04 и сохранить?
/.profile у меня вот что:
/.bashrc добавлял и export PATH=$PATH:/media/mark и export PATH=$PATH:/new/path , ничего.
у меня еще есть bash_profile , там было :
/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if
/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n «$BASH_VERSION» ]; then
# include .bashrc if it exists
if [ -f «$HOME/.bashrc» ]; then
. «$HOME/.bashrc»
fi
fi
# set PATH so it includes user’s private bin directories
export PATH=$PATH:/media/mark
/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don’t do anything
case $- in
*i*) ;;
*) return;;
esac
# don’t put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don’t overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern «**» used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
export PATH=$PATH:/media/mark
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval «$(SHELL=/bin/sh lesspipe)»
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z «$
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we «want» color)
case «$TERM» in
xterm-color|*-256color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
if [ -n «$force_color_prompt» ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it’s compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
# If this is an xterm set the title to user@host:dir
case «$TERM» in
xterm*|rxvt*)
PS1=»\[\e]0;$
;;
*)
;;
esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r
/.dircolors && eval «$(dircolors -b
/.dircolors)» || eval «$(dircolors -b)»
alias ls=’ls —color=auto’
#alias dir=’dir —color=auto’
#alias vdir=’vdir —color=auto’
alias grep=’grep —color=auto’
alias fgrep=’fgrep —color=auto’
alias egrep=’egrep —color=auto’
fi
# colored GCC warnings and errors
#export GCC_COLORS=’error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01′
# some more ls aliases
alias ll=’ls -alF’
alias la=’ls -A’
alias l=’ls -CF’
# Add an «alert» alias for long running commands. Use like so:
# sleep 10; alert
alias alert=’notify-send —urgency=low -i «$([ $? = 0 ] && echo terminal || echo error)» «$(history|tail -n1|sed -e ‘\»s/^\s*3\+\s*//;s/[;&|]\s*alert$//’\»)»‘
# Alias definitions.
# You may want to put all your additions into a separate file like
#
/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
Источник
Python: Best way to add to sys.path relative to the current running script
I have a directory full of scripts (let’s say project/bin ). I also have a library located in project/lib and want the scripts to automatically load it. This is what I normally use at the top of each script:
This is kind of cumbersome, ugly, and has to be pasted at the beginning of every file. Is there a better way to do this?
Really what I’m hoping for is something as smooth as this:
Or even better, something that wouldn’t break when my editor (or someone else who has commit access) decides to reorder the imports as part of its clean-up process:
That wouldn’t port directly to non-posix platforms, but it would keep things clean.
12 Answers 12
This is what I use:
If you don’t want to edit each file
- Install you library like a normal python libray
or - Set PYTHONPATH to your lib
or if you are willing to add a single line to each file, add a import statement at top e.g.
keep import_my_lib.py in bin and import_my_lib can correctly set the python path to whatever lib you want
Create a wrapper module project/bin/lib , which contains this:
Then you can replace all the cruft at the top of your scripts with:
Using python 3.4+
If you don’t want to change the script content in any ways, prepend the current working directory . to $PYTHONPATH (see example below)
And call it a day!
You can run the script with python -m from the relevant root dir. And pass the «modules path» as argument.
Example: $ python -m module.sub_module.main # Notice there is no ‘.py’ at the end.
This is how I do it many times:
There is a problem with every answer provided that can be summarized as «just add this magical incantation to the beginning of your script. See what you can do with just a line or two of code.» They will not work in every possible situation!
For example, one such magical incantation uses __file__ . Unfortunately, if you package your script using cx_Freeze or you are using IDLE, this will result in an exception.
Another such magical incantation uses os.getcwd(). This will only work if you are running your script from the command prompt and the directory containing your script is the current working directory (that is you used the cd command to change into the directory prior to running the script). Eh gods! I hope I do not have to explain why this will not work if your Python script is in the PATH somewhere and you ran it by simply typing the name of your script file.
Fortunately, there is a magical incantation that will work in all the cases I have tested. Unfortunately, the magical incantation is more than just a line or two of code.
Источник