У меня есть сценарий оболочки, который я хочу запустить без использования команд "sh" или "bash". Например:
Вместо того: sh script.sh
Я хочу использовать: script.sh
Как я могу это сделать?
PS (i) Я не очень часто использую сценарий оболочки и пытался читать псевдонимы, но я не понимал, как их использовать.
(ii) Я также читал о связывании скрипта с другим файлом в переменных PATH. Я использую свой университетский сервер, и у меня нет прав для создания файла в этих местах.
$HOME/bin
- если у вас его еще нет, добавьте его в свой PATH (около передней части). Поместите сценарии (и любые другие программы), которые вы хотите выполнить напрямую, без указания здесь пути или символических ссылок здесь, где находятся реальные программы.mv example.sh example
и тогда онexample
должен работать сам по себе.Ответы:
Добавьте «Шебанг» вверху вашего файла:
И сделайте ваш файл исполняемым (
chmod +x script.sh
).Наконец, измените ваш путь, чтобы добавить каталог, в котором расположен ваш скрипт:
(как правило, вы хотите
$HOME/bin
хранить свои собственные скрипты)источник
source script.sh
работал нормально, а точнееsource <filename_without_any_extension_type>
source ./my-cool-script
(или. ./my-cool-script
) будет загрязнять текущий сеанс оболочки любыми переменными, определенными в скрипте. Sourcing не следует использовать, если вы не хотите явно изменять сеанс оболочки, устанавливая переменные среды, изменяя каталог и т. Д. В противном случае могут возникнуть действительно ужасные ошибки, поскольку переменные из одного выполнения сценария, если они выполняются посредством поиска, могут влиять на выполнение другого сценария../
, возможно, у вас есть конфликт имен. Попробуйте переименовать.Вот некоторые из предпосылок прямого использования имени скрипта:
she-bang (#!/bin/bash)
строку в самом верху.chmod u+x scriptname
сделать скрипт исполняемым. (гдеscriptname
имя вашего сценария)/usr/local/bin
папку.Примечание . Причина, по которой я предложил поместить ее в
/usr/local/bin
папку, заключается в том, что, скорее всего, это будет уже добавленный путь к вашемуPATH variable
.Обновить:
Если у вас нет доступа к
/usr/local/bin
папке, сделайте следующее:myscripts
.ls -lart
в своем домашнем каталоге, чтобы определить сценарий запуска, который использует ваша оболочка. Это должно быть.profile
или.bashrc
.export set PATH=$PATH:~/myscript
.scriptname
.источник
. .bashrc
. То есть, просто положить.
затемspace
и затем ваш стартовый имя сценария.Просто убедитесь, что он исполняемый, используя
chmod +x
. По умолчанию текущий каталог отсутствует в вашей переменной PATH, поэтому вам нужно будет выполнить его как./script.sh
- или иным образом ссылаться на него по определенному пути. В качестве альтернативы, если вам действительно нужно простоscript.sh
, вам нужно добавить его в свой PATH. (У вас может не быть доступа для изменения системного пути, но вы почти наверняка можете изменить PATH вашей текущей среды.) Это также предполагает, что ваш скрипт начинается с чего-то вроде#!/bin/sh
.Вы также можете использовать псевдоним, который на самом деле не связан со сценариями оболочки, а только с оболочкой, и он прост:
Что позволит вам использовать просто
script.sh
(буквально - это не будет работать для любого другого*.sh
файла) вместоsh script.sh
.источник
alias
команду в приглашении оболочки, и тогда псевдоним будет доступен для запуска команды.В этом примере файл будет называться
myShell
Прежде всего нам нужно сделать этот файл, который мы можем начать, набрав следующее:
Заметьте, мы не поставили
.sh
расширение? Это потому, что когда мы запускаем его из терминала, нам нужно только набратьmyShell
, чтобы запустить нашу команду!Теперь в нано верхняя строка ДОЛЖНА быть,
#!/bin/bash
тогда вы можете оставить новую строку, прежде чем продолжить.Для демонстрации добавлю базовый
Hello World!
ответИтак, я набираю следующее:
После этого мой пример должен выглядеть так:
Теперь сохраните файл и затем выполните эту команду:
Теперь мы сделали исполняемый файл, к
/usr/bin/
которому мы можем переместить его с помощью следующей команды:Просто чтобы убедиться, что машина может выполнить ее правильно, нам нужно перезагрузить машину
я использовал
sudo shutdown -r now
Congrats! Наша команда сейчас выполнена! В терминале мы можем напечатать
myShell
и это должно сказатьHello World!
источник
/usr/bin
многие системы, предназначенные/usr/local/bin
для этой цели и резервируемые/usr/bin
строго для ОС.sudo chmod
вашем собственном файле.Вы должны включить исполняемый бит для программы.
Тогда вы можете использовать
./script.sh
Вы можете добавить папку к PATH в вашем
.bashrc
файле (находится в вашем домашнем каталоге). Добавьте эту строку в конец файла:источник
Вы можете набрать sudo install (имя скрипта) / usr / local / bin / (то, что вы хотите набрать, чтобы выполнить указанный скрипт)
пример:
sudo install quickcommit.sh /usr/local/bin/quickcommit
введите парольтеперь можно запускать без .sh и в любом каталоге
источник
Добавить . (текущий каталог) в вашей переменной PATH.
Вы можете сделать это, отредактировав свой файл .profile.
поместите следующую строку в ваш файл .profile.
PATH=$PATH:.
Просто убедитесь, что добавили
#!/bin/bash
строку Shebang ( ) в начале вашего скрипта и сделайте скрипт исполняемым (используяchmod +x <File Name>
).источник
Вот мой скрипт резервного копирования, который даст вам идею и автоматизацию:
Сервер: Ubuntu 16.04 PHP: 7.0 Apache2, Mysql и т. Д.
Перейдите / home / user в свой каталог пользователя и введите: backupscript в любом месте терминала, чтобы запустить скрипт! (при условии, что / usr / bin находится на вашем пути)
источник
Введите
"#!/bin/sh"
перед сценарием. Тогда сохраните это какscript.sh
например. скопируйте его в каталог$HOME/bin
или$HOME/usr/bin
каталог может отличаться в разных дистрибутивах Linux, но они заканчиваются
'bin'
и находятся в домашнем каталогеcd $HOME/bin
или в$HOME/usr/bin
Type.
chmod 700 script.sh
Вы можете запустить его, просто набрав
run.sh
на терминале. Если это не работает, попробуйтеchmod +x run.sh
вместоchmod 700 run.sh
источник
Сделать любой файл исполняемым
Допустим, у вас есть исполняемый файл с именем migrate_linux_amd64, и вы хотите запустить этот файл как команда типа «мигрировать»
Убедитесь, что у вас есть права на выполнение файла,
-rwxr-xr-x 1 oracle oinstall 7473971 May 18 2017 migrate.linux-amd64
если нет, запустите
chmod +x migrate.linux-amd64
Затем скопируйте ваш файл в
/usr/local/bin
. Этот каталог принадлежит пользователю root, используйте sudo или переключитесь на root и выполните следующую операциюисточник
Просто:
источник