1

Я добавил следующее в мой ~/.bash_profile

# opens "flashlog.txt" in Console
alias trace='open -a /Applications/Utilities/Console.app/ ~/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt'

# clears "flashlog.txt"
alias cleartrace='cat /dev/null > ~/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt'

Итак, в Терминале я могу ввести команду "trace" и просмотреть flashlog.txt в консоли. Я также могу ввести команду "cleartrace" и очистить flashlog.txt. Это прекрасно работает.

Тем не менее, если я создаю новый сценарий bash со следующим, я получаю сообщение об ошибке «cleartrace: команда не найдена»:

#!/bin/bash
cleartrace
cp -v -f ActivityLauncher.swf ../launchers/addu02l05_launcher_1.swf
open "/Applications/Adobe Flash CS4/Players/Flash Player.app" ./test.swf 

Почему псевдоним работает в Терминале, а не при вызове из скрипта? (Как мне это исправить?)

2 ответа2

4

Это связано с тем, что bash читает ~/.bash_profile только для интерактивных оболочек. Переместите определения псевдонимов в ~/.bashrc, и это должно работать. Загляните в раздел INVOCATION на странице руководства bash, чтобы узнать, как все это работает.

2

Информационный файл Bash говорит:

Практически для всех целей функции оболочки предпочтительнее псевдонимов.

Функции могут быть экспортированы, с одной стороны.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .