Исходный файл сценария оболочки не сохранен
Я сохранил скрипт оболочки в bin(созданный мной). Когда я запускаю программу, чтобы избежать./ для запуска скрипта, мне нужно скопировать скрипт в один из каталогов, указанных в переменной PATH. Созданный каталог bin отсутствует в списке путей. Итак, чтобы добавить в список PATH:
export PATH=~/bin:"$PATH"
Но этот каталог не сохраняется в списке PATH. Когда я открываю новое окно терминала, мне нужно снова экспортировать его, чтобы запустить скрипт. Как я могу добавить его в список PATH навсегда? Также, если я пытаюсь переместить сценарий в каталог, указанный в списке PATH, он говорит, что РАЗРЕШЕНИЕ РАЗРЕШЕНО. Должен ли я переместить его, став пользователем root?
5 ответов
Можете добавить export PATH=~/bin:"$PATH"
на ваш ~/.profile
файл. Добавьте его внизу, сохраните и снова подключитесь к SSH.
Кроме того, если вы хотите, чтобы это изменение было общесистемным для любого пользователя, вы можете отредактировать путь в /etc/environment
,
Этот работал для меня.
Откройте свой.bashrc gedit ~/.bashrc
Текстовый редактор открыт.
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Вставьте это и отредактируйте.bashrc. После закрытия текстового редактора, source ~/.bashrc
Если вы получаете Отказано в доступе, это означает, что скрипт не в исполняемом формате. chmod 755 program_name
Это должно сделать работу. Откройте новый терминал, и он будет работать.
Добавить собственный путь к домашнему каталогу в $PATH
- Отредактируйте свой
~/.profile
Добавьте эту строку после всех переменных, связанных с $PATH:
export PATH="$PATH:$HOME/your-home-dir-path"
Сохранить файл.
Выйти / Перезапустить.
Добавление этого к вашему ~/.profile
включить это изменение в терминале и текстовом режиме.
На всякий случай, если ваш собственный путь ~/bin
или же ~/.local/bin
!!!
Как уже говорилось в комментарии к вопросу, эти места уже включены в PATH в Ubuntu!
Вы можете просто:
- Создайте каталог (например,
~/bin
). - Скопируйте свой сценарий к нему.
Измените его разрешения на выполнение с помощью команды:
chmod +x ~/bin/script.sh
Выйти / Войти. Кроме того, вы можете выполнить
source ~/.profile
Как уже упоминалось, ваш ~/.profile должен уже содержать что-то вроде следующего:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Однако, похоже, что вы запускаете интерактивную оболочку bash без входа в систему (то есть вы не подключаетесь через ssh, а запускаете терминал из среды рабочего стола), которая не читает ~/.profile, а вместо этого ~/.bashrc читается как объяснено. здесь
Вы можете изменить ~/.bashrc, чтобы добавить путь, или прочитать ~/.profile для оболочек без входа в систему, как описано здесь, но, как упоминал Джейкоб, если вы выходите из системы / входите в систему, это не требуется.
Чтобы понять разницу между логином и без логина, посмотрите этот ответ.
Когда ты бежишь
export PATH=~/bin:"$PATH"
Вы устанавливаете переменную среды PATH и экспортируете ее в работающие родительские терминалы. Это все равно что сказать "новая переменная PATH это, распространяй слово". Это работает, но как только вы перезагрузите компьютер, PATH вернется к настроенному. Чтобы сделать изменение постоянным, вам нужно отредактировать файл.profile в вашей домашней папке. Это обычно имеет это:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
которая будет автоматически включать папку $HOME/bin, если она существует. Но если этого не произойдет, вы можете просто добавить либо приведенные выше команды, либо:
export PATH="$PATH:$HOME/bin"
к файлу, и эта папка будет включена в PATH на каждом сеансе вашего пользователя.
Для записи в каталог /usr/bin вам необходимы права root, но это не обязательно, если вы измените файл.profile.