У меня есть сценарий в моей папке $HOME/bin
. Когда я получаю удаленный доступ к своей машине, я не могу их использовать и не могу понять, почему. Они отлично работают, когда я нахожусь перед моим удаленным компьютером.
Я думаю, что это может иметь какое-то отношение к файлу .bashrc
. PATH
устанавливается с
PATH=$PATH:$HOME/bin
export PATH
, мне кажется, это правильно.
Я также попытался скопировать файл из папки /usr/bin
, выйдя из системы и войдя в нее снова, но все же мне не удается использовать свой сценарий.
Если я зайду в каталог ~/bin
и наберу ./myscript
сценарий будет работать (просто мне нужно запустить его из разных папок, где у меня есть несколько файлов для обработки).
Это происходит, потому что при входе на пути SSH, оболочка, Вы добираетесь, оболочка входа в систему. Напротив, для использования терминологии от bash
документация при открытии Окна терминала на уже запущенной графической сессии входа в систему, оболочка, которую Вы получаете, является все еще интерактивной оболочкой, но это не оболочка входа в систему.
От man bash
:
Когда удар вызывается как интерактивная оболочка входа в систему, или как неинтерактивная оболочка с - опция входа в систему, он сначала читает и выполняет команды из файла
/etc/profile
, если тот файл существует. После чтения того файла это ищет~/.bash_profile
,~/.bash_login
, и~/.profile
, в том порядке и чтениях и выполняет команды от первой, которая существует и читаема. - noprofile опция может использоваться, когда оболочка запускается для запрещения этого поведения.Когда оболочка входа в систему выходит, удар читает и выполняет команды из файла
~/.bash_logout
, если это существует.Когда интерактивная оболочка, которая не является оболочкой входа в систему, запускается, удар читает и выполняет команды от
/etc/bash.bashrc
и~/.bashrc
, если эти файлы существуют. Это может быть запрещено при помощи - norc опция. - rcfile опция файла вынудит удар считать и выполнить команды из файла вместо/etc/bash.bashrc
и~/.bashrc
.
Таким образом, необходимо проверить, есть ли у Вас какой-либо из этих файлов:
~/.bash_profile
~/.bash_login
~/.profile
Если Вы делаете, то необходимо отредактировать первый, Вы находите и заставляете его добавить $HOME/bin
к Вашему пути. Если Вы не делаете, создайте одного из них с этой целью. (Лучший для создания ~/.profile
так как другие оболочки будут использовать это также.)
Вы почти наверняка имеете ~/.profile
, так как поведение Ubuntu по умолчанию состоит в том, чтобы создать это с любой новой учетной записью пользователя (включая первую учетную запись, созданную при установке Ubuntu).
Однако по умолчанию этот файл уже содержит необходимые строки для добавления частного bin
каталог к $PATH
:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Таким образом, немного странно, что это уже не работает на Вас.
В зависимости от Ваших потребностей Вы могли бы хотеть сделать ~/.profile
(или ~/.bash_login
или ~/.bash_profile
) звонить ~/.bashrc
:
source ~/.bashrc
Но было бы еще лучше просто включать добавление строк $HOME/bin
к Вашему $PATH
в ~/.profile
(или ~/.bash_login
или ~/.bash_profile
), но нет ~/.bashrc
. В конце концов, если Вы делаете это для каждой оболочки входа в систему, это должно также произойти, когда Вы входите в систему графически, и быть наследованными всеми Вашими интерактивными оболочками, которые не являются оболочками входа в систему.
Просто поместите вашу конфигурацию в файл .bash_profile в домашнем каталоге.
Если у вас его нет, вы можете его создать.