Как сделать сценарий оболочки глобальным?

84

У меня Mac OS 10.6, и я пытаюсь кое-что узнать о сценариях оболочки. Я понимаю, как сохранить сценарий оболочки и сделать его исполняемым, но мне интересно, что я могу сделать или где я могу сохранить файл, чтобы сделать его глобальным (то есть доступным независимо от того, в какой папке я нахожусь).

Например, если я сохраню файл .sh в каталоге / Users / username / и сделаю его исполняемым, я могу выполнить этот сценарий только в этом конкретном каталоге. Например, если я перейду в / Users / username / Downloads, я не смогу выполнить скрипт.

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

зебраман
источник
1
PATHСначала прочтите о переменной среды, а затем обновите вопрос.
S.Lott

Ответы:

137

/usr/local/binбыло бы наиболее подходящим местом. В Mac OS X он PATHпо умолчанию

unbeli
источник
1
Бинго! Спасибо :)
Патрик Линч
44

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

Если вы вставите его ~/bin, вам может потребоваться добавить его в переменную среды PATH. /usr/local/binуже должен быть на пути.

Брайан Окли
источник
30

Есть два способа сделать это -

  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 файле! :)

Надеюсь, я кому-то помог!

С уважением,

Анонимный X

Анонимный X
источник
это здорово ... и это позволяет моему 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» (не проверено, но, похоже, это наименее сложный способ ИМО.)

d1gl3r
источник
1
Возможно, вам понадобится sudo mv script.sh /usr/local/bin, поскольку этот каталог не доступен для записи без повышения привилегий.
Перетте
-2

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

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

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

Frxstrem
источник
9
Я собираюсь проголосовать против, потому что / usr / bin - неправильный ответ. / usr / local / bin специально разработан для «локальных» скриптов (т.е. тех, которые вы создаете, а не тех, которые поставляются с системой).
Брайан Окли,