Я новичок в написании сценариев bash и сделал один для своего VPN под названием myvpn.sh
Вместо того, чтобы делать ./ myvpn.sh
, я хочу просто написать myvpn
в терминале, и он будет запускать его из любого каталога. Пытался найти его в Google, но безуспешно (вероятно, искал не то в Google).
Может ли это сделать любитель или для этого требуются дополнительные знания?
Можно сделать alias
из пути к Вашему сценарию. Во-первых, сделайте свой исполняемый файл команды при помощи chmod
:
chmod u+x myvpn.sh
где u+x
дает только пользователю (Вы) разрешение выполнить сценарий.
Затем сделайте alias
в Вашем .bashrc
сделать это персистентным:
alias myvpn='/path/to/your/script'
Теперь можно просто ввести myvpn
отовсюду выполнить сценарий.
Чтобы смочь запустить скрипт просто путем введения его имени, сценарий должен находиться в папке, которая перечислена в пути поиска. Команда echo $PATH
перечислит Ваши текущие пути поиска. Когда Вы вводите имя исполняемого файла, система ищет папки, перечисленные в переменной ПУТИ для нахождения исполняемого файла с именем, которое Вы ввели.
Если Вы захотите, чтобы Ваш сценарий был доступен всем пользователям, то необходимо будет поместить его в одну из папок под системными папками. Для этого Вам нужны права администратора.
Если Вы - единственный пользователь, который должен использовать сценарий, затем создать a bin
папка под Вашей домашней папкой (т.е. папкой, которая также содержит Documents
, Pictures
и т.д.). Затем выйдите из системы и въезжайте задним ходом. Ubuntu настроена для автоматического включения локального bin
папка в ПУТИ. После этого Вы сможете выполнить любой исполняемый файл, который Вы помещаете в свое локальное bin
папка путем ввода имени файла.
Деталь: если Вы хотите ввести myvpn
для запущения пользовательского скрипта затем также необходимо будет назвать его как этот: таким образом переименовать myvpn.sh
кому: myvpn
. Также не забывайте делать исполняемый файл сценария. После перемещения сценария в локальное bin
папка, следующая команда сделает это исполняемым файлом:
chmod +x ~/bin/myscript
Можно также использовать файлы (наутилус) для создания исполняемого файла сценария: щелкните правой кнопкой по сценарию, выберите "Свойства" и перейдите к вкладке "Permissions".
Привет и приветствие на Спрашивает Ubuntu.
Удачный Вы, Ваш вопрос не требует усовершенствованного знания вообще!
Чтобы быть выполненным только с его именем, двоичный файл должен быть в одном из каталогов, существующих в переменной окружения PATH.
Каталог по умолчанию для пользовательских исполняемых файлов на Ubuntu $HOME/bin
. Если это не существует, можно создать его вручную, и это будет автоматически добавлено в переменной ПУТИ. $HOME
переменная среды, которая содержит путь к корневому каталогу Вашего пользователя, означая, что эта папка "мусорного ведра" должна быть создана в той же папке как "Документы", "Изображения", "Музыка"...*
Для знания, что Вы имеете в своей переменной ПУТИ самый простой путь состоит в том, чтобы открыть терминал и тип echo $PATH
, как предложено ванадием. Можно также просмотреть все переменные среды с env
.
Необходимо получить что-то как (плюс другие переменные, если бы Вы использовали env
): PATH=/home/datam/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Папки разделяются ":" знак.
Каждый раз, когда Вы вводите команду в терминале, Ваша ОС изучает эти каталоги, пока она не находит соответствующий исполняемый файл!
Здесь Вы видите, что существует папка в Вашем корневом каталоге т.е. доступна без sudo: $HOME/.local/bin
Если Вы добавили папку мусорного ведра вручную, то Вы будете видеть его в своем пути (после того, чтобы выходить из системы и вхождения в снова).
Это - то, где Ваш файл должен быть!
Поэтому удостоверьтесь, что Ваш файл является исполняемым файлом Вашим пользователем т.е. имеет x разрешение для "u" (графически щелчком правой кнопкой-> свойства-> полномочия в зависимости от Вашего распределения, в командной строке с ls -l
от папки, где Ваш файл стоит). Отредактируйте свой сценарий для добавления #!/bin/bash
на его первой строке, если не уже сделанный.
Теперь, переместите или скопируйте файл в $HOME/bin
Сделанное задание :) можно теперь выполнить его от терминала, просто введя имя файла!
Если имя файла Вашего сценария будет "myvpn.sh", то Вы запишете "myvpn.sh" в терминале для вызова его. Таким образом, если Вы хотите назвать сценарий только с "myvpn", необходимо переименовать файл.
Вы могли переместить свой сценарий в /usr/local/bin
и сделайте это исполняемым файлом с chmod 0750 myvpn.sh
. Это должно позволить Вам запускать свой скрипт, просто введя, это - имя. На всякий случай удостоверьтесь, что Ваш сценарий запускается с #!/bin/bash
.