2012-03-09 4 views
2

У меня есть сценарий оболочки с именем remote_execution.sh. Возможно ли, что я просто набираю remote_execution в любой из папок и запускает выполнение, как gcc, vi или любая такая команда?Как создать команду unix

Заранее спасибо.

+0

наверняка это должно быть обманом? – poolie

+0

На самом деле это не заслуживает ответа, но вы можете создать каталог специально для своих скриптов и добавить этот каталог в свой $ PATH. Google «добавьте каталог в $ PATH» для получения информации об этом. – CoffeeRain

ответ

1

Добавить каталог, в котором remote_execution.sh находится в вашей переменной $PATH. Кроме того, если вы хотите, чтобы быть запущен без концовки .sh, переименовать сценарий к remote_execution

1

У вас есть 3 варианта: вы либо скопировать сценарий в одном из каталогов, найденных в PATH или создать символическую ссылку для сценария там (ln -s) или добавьте текущий каталог сценария оболочки в PATH (export PATH=$PATH:dir).

Чтобы узнать, что PATH выглядит как echo $PATH.

5

Следующие четыре шага должны позволить запускать remote_execution из любого места в файловой системе:

  1. переименуйте файл remote_execution, удаляя .sh расширение
  2. Добавить в «shebang» линию к началу файл

    #!/bin/bash 
    
  3. Изменение permissions файла, так что исполняемый файл (см man chmod)

    chmod u+x remote_execution 
    
  4. Переместить файл в папку в вашем PATH так что это «работает в любой папке». В догадке:

    mv remote_execution /usr/local/bin 
    
+0

Откуда вы знаете, что это скрипт bash? Откуда вы знаете, что отсутствует shebang? Что он еще не выполним? Что это не в ПУТЕ? Разве он не должен делать «sudo mv remote_execution/usr/local/bin» для записи в/usr/local/bin? –

+1

@userunknown Это называется вероятностью. Были сделаны предположения, и они были безопасными предположениями. – meagar

3

Вы можете поместить этот скрипт в любой папке, изображаемого $PATH

$ echo $PATH 

[[email protected] test]$ echo $PATH 
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/andreas/bin 

переименовать скрипт для remote_execution и положить #!/bin/sh в первой строке. Также chmod, чтобы убедиться, что он выполним

$ chmod 755 remote_execution 
1

Да. У вас есть два варианта: поместите скрипт где-нибудь на свой путь или добавьте каталог сценария в свой путь в ~/.profile.

4

Другой вариант установлен псевдоним

alias remote_execution="fullpath to remote_execution.sh" 
0

Каждый файл имеет свои собственные биты разрешения. Вы должны изменить разрешения файла, чтобы он был выполнен.Поэтому используйте команду -

chmod +x remote_execution 

Надеяться вы добавили «shebang» строку в верхней части файла

#!/bin/bash 

При вызове сценария с явным интерпретатором, как

bash remote_execution.sh 
/bin/bash remote_execution.sh 
dash remote_execution.sh 
sh remote_execution.sh 

ваш выбранный интерпретатор используется, независимо от того, что говорит shebang, что является просто комментарием. В противном случае ядро ​​ищет shebang и запускает программу с указанным им интерпретатором. Если используется символ Шебанга, то вне зависимости от того, какое расширение!

Ваша оболочка - это программа. Он имеет переменные, один из них $ PATH

$PATH содержит двоеточиями список каталогов, разделенных для поиска команд

Если вы хотите, чтобы он просто введите $ echo $PATH в терминале.

На моем компьютере она показывает

[email protected]:~$ echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 

Это означает, что, если я набираю команду как GCC или VIM он ищет в списке выше каталогов.

Теперь просто скопируйте сценарий оболочки в любую из вышеуказанных папок, чтобы получить доступ к нему из любого места.

Смежные вопросы