2010-08-18 4 views
0

Я пытался настроить команду bash в терминале на Mac.Попытка настроить команду bash

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

Я установил символические ссылки в/usr/local/bin/в текущее местоположение скриптов. Когда я пытаюсь запустить его с символической ссылки, это не сработает. Я не верю, что проблема - это $ PATH, потому что в этом месте существуют pip, git, ipython. Когда я изменяю параметр $ PATH, они терпят неудачу.

Предложения?

+1

попробуйте 'ls -l' противопоставить символическим ссылкам, чтобы убедиться, что они установлены правильно. –

+0

И проверьте 'ls -lL'' - без капитала L вы увидите, где находится ссылка, но не обязательно, что в дальнем конце ссылки ничего нет. –

ответ

3

ls -l /usr/local/bin/foo и посмотреть где именно показана символическая ссылка указание. Бетча сломался.

Если нет, попробуйте запустить /usr/local/bin/foo. Если это сработает, это была ваша ПУТЬ, это неправильно, несмотря на то, что вы сказали в OP.

Единственное, что может вызвать это поведение, это то, что скрипт читает $0 (его собственное имя выполняется). С символической ссылкой это будет иметь другое значение.

0

Я нашел свой собственный ответ ... Символы были созданы автоматическим файлом, который транслировал мой pwd. Я также использовал virtualenv, поэтому, чтобы заставить его работать, мне пришлось активировать virtualenv и быть внутри папки, в которой был скрипт, создавший символические ссылки.

+2

Я с уважением представляю, что символические ссылки в/usr/local/bin, вероятно, не зависят от того, находитесь ли вы в определенной виртуальной среде. –

0

Я устанавливаю свои команды в $HOME/bin вместо /usr/local/bin, но это не имеет большого значения. Как намечено в комментариях, возникает вопрос, правильно ли установлены символические ссылки.

  • Проверьте, какую команду оболочки думает, что вы должны выполнить: which command
  • Убедитесь, что ссылка в /usr/local/bin указывает на правильный файл (и имеет разрешение на выполнение, и т.д.):
    • ls -l /usr/local/bin/command
    • ls -lL /usr/local/bin/command
  • Проверьте правильность пути интерпретатора в shebang:
    • file /usr/local/bin/command
  • Убедитесь, что /usr/local/bin на самом деле на вашем PATH: echo $PATH

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

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