Як зробити сценарій оболонки глобальним?


85

Я працюю в ОС Mac 10.6 і намагаюся навчитися чомусь про сценарії оболонки. Я розумію, як зберегти скрипт оболонки та зробити його виконуваним, але мені цікаво, що я можу зробити або де я можу зберегти файл, щоб зробити його глобальним (тобто доступним незалежно від того, в якій папці я перебуваю).

Наприклад, якщо я зберігаю файл .sh у каталозі / Users / username / і роблю його виконуваним, я можу виконати лише той сценарій у цьому конкретному каталозі. Наприклад, якщо я переходжу до / Users / username / Downloads, я не можу виконати сценарій.

Крім того, будь-які пропозиції щодо ресурсів, щоб дізнатися більше про сценарії оболонки, були б корисними. Дякую


1
PATHСпочатку прочитайте про змінну середовища, а потім оновіть питання.
S.Lott

Відповіді:


138

/usr/local/binбуло б найбільш підходящим місцем. Mac OS X має це PATHза замовчуванням


1
Бінго! Дякую :)
Патрік Лінч

44

Традиційно такі сценарії або входять ~/bin(тобто: каталог bin у вашому домашньому каталозі), або /usr/local/bin/перший означає, що сценарій буде працювати лише для вас, другий - для сценаріїв, які ви хочете, щоб хтось у системі міг запускати.

Якщо ви вставите його ~/bin, можливо, вам доведеться додати це до вашої змінної середовища PATH. /usr/local/binвже має бути на шляху.


31

Є два способи зробити це -

  1. Помістіть свій скрипт в usr / local / bin і переконайтесь, що він виконуваний (chmod + x my_script) (це вже встановлено у шляху, ви можете перевірити, виконавши echo $ PATH)
  2. Створіть папку у своєму домашньому каталозі під назвою bin. (Для ваших особистих сценаріїв)
    • cd ~ (переводить вас до домашнього каталогу)
    • mkdir bin (створити папку bin)
    • vim .bash_profile (для встановлення змінної середовища шляху)
    • експортувати PATH = ~ / bin: $ PATH (натисніть i, потім додайте цей рядок, а потім виконайте esc та введіть: wq)
    • Тепер ви можете просто ввести ім'я вашого сценарію та запустити його з будь-якого місця.

** ПРИМІТКА . Якщо ви хочете запустити сценарій із скороченою командою, а не вводити ціле ім’я файлу, додайте до свого .bash_profile наступне:
alias myscript='my_script.sh'
Тоді ви можете запустити сценарій, просто ввівши myscript. (Ви можете додати будь-який псевдонім, який хочете)


4

В операційній системі mac

  • Відкрийте файл bash ~ / .bashrc.
  • додати шлях до вашого сценарію у файл bashrc, використовуючи export PATH = "$ PATH: /Users/sher.mohammad/Office/practice/practiceShell"
  • Відкрийте файл ~. / Bash_profile та додайте [[-s ~ / .bashrc]] && source ~ / .bashrc
  • відкрити нове вікно терміналу Тепер, коли ви відкриєте свій термінал, ваш скрипт буде завантажений

чому б просто не покласти його прямо .bash_profile? Це набагато простіше (і ця річ .bashrc у мене ніколи не працювала).
szeitlin

Я дослідив, що виявив, що bash_profile виконується при вході в систему, bashrc використовується для оболонок, що не входять в систему, OS X за замовчуванням, наприклад, оболонки входу та завантажує bash_profile, тому додавання в bash_profile буде працювати нормально, і якщо ви пишете в bashrc, ви маєте додати [[- s ~ / .bashrc]] && source ~ / .bashrc у bash_profile, щоб завантажити bashrc, коли bash_profile запускається під час входу
Шер Мохаммад,

4

Це дуже просто, якщо ви знайомі з вашим файлом bashrc! Це повністю використовуватиме лише ваш файл .bashrc і займає 2 секунди.

(Я використовую Arch Linux Manjaro, тому використовую .bashrc, який знаходиться в моєму домашньому каталозі)

Код, який потрібно розмістити у вашому файлі .bashrc:

# Simple bashrc method to launch anything in terminal from any directory

YOURCOMMAND () {
  cd /path/to/directory/containing/your/script/ && ./YOURSCRIPT
}

Як бачите, спочатку ви використовуєте просту команду 'cd' і надаєте їй каталог розташування скриптів, потім використовуєте '&&', щоб ви могли виконати наступну команду відразу після, і нарешті відкрийте свій сценарій так само, як нормально! Надзвичайно просто і збережено прямо у вашому файлі .bash! :)

Сподіваюся, я комусь допоміг!

З повагою,

AnonymousX


це чудово ... і це дозволяє моєму zsh виконувати автозаповнення!
Мілан,

Але якщо у вас інший сценарій?
Паулу Серджо Шлогль

2

Використовуючи оболонку bash, напишіть цей скрипт як функцію, а потім помістіть його в .bashrc або джерело файлу, що містить цю функцію, за допомогою "source file_name"

Тепер виконайте сценарій за допомогою виклику функції в оболонці.


1

Якщо зберегти його в /usr/bin(або будь-якому іншому каталозі, що є PATH), або відредагувати, PATHщоб включити каталог, в якому ви його зберегли, в основному змусить його працювати в будь-якому каталозі.


7
/usr/binможе бути повністю спорожнений і замінений під час оновлення ОС, завдяки чому ваш скрипт таємниче зникне. /usr/local/binдля цього, як згадував Брайан Оклі. Також див. Стандарт ієрархії файлової системи
Стівен П

0

з робочого каталогу 'script.sh' "mv [script.sh] / usr / local / bin" (не перевірено, але здається найменш складним способом IMO.)


1
Вам, мабуть, знадобиться sudo mv script.sh /usr/local/bin, оскільки в цей каталог не можна писати без ескалації привілеїв.
Перетт

-2

Ви повинні помістити його в глобальний виконуваний каталог на своїй машині. Я думаю, що це зазвичай буде/usr/bin в операційних системах на основі Unix (однак для цього найчастіше потрібні привілеї суперкористувачів на цій машині).

Ви також можете помістити його в будь-який інший каталог, який знаходиться у $PATHзмінній середовища, хоча це буде працювати лише для тих користувачів, у яких цей каталог є у цій змінній.

Ви можете знайти значення $PATH, набравши echo $PATHоболонку. Каталоги розділені : .


9
Я проголосую проти, оскільки / usr / bin - неправильна відповідь. / usr / local / bin спеціально розроблений для "локальних" сценаріїв (тобто: тих, які ви створюєте, а не тих, що входять до системи).
Bryan Oakley
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.