2015-04-21 2 views
0

У меня странное поведение $ 0 под cygwin.

В моем сценарии я делаю echo "$0" и получаю как вывод -bash вместо имени пути. Однако, если я делаю realpath $ 0, я получаю фактический путь. Почему это так, и другие люди тоже сталкиваются с этим?

Я пытаюсь исправить сценарий, это что-то меняет?

+1

Возможно, вы захотите проверить: [Может ли сценарий Bash указать, в каком каталоге он хранится?] (Http://stackoverflow.com/q/59895/1983854) – fedorqui

ответ

2

Да, источник является причиной. Sourcing не запускает другой процесс, поэтому такие вещи, как $0, будут по-прежнему иметь свои значения, когда сценарий составляет source d.

Вот скрипт myname:

#!/bin/bash 
echo "$0" 

Вот Sourcing:

$ source myname 
-bash 

И здесь работает скрипт:

$ ./myname 
./myname 

Там вы!

Обновление: Это не cygwin. Все снаряды должны вести себя таким образом, по дизайну.

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