В ubuntu: я не могу изменить файлы, и получить файл не удается, хотя файл существует?

Когда я меняю сценарий bash (Ubuntu 10.04), сценарий изменяется, но когда я запускаю его, он запускает более старую версию, и внесенные изменения игнорируются. А некоторые файлы просто пишет, что файл не существует (хотя он и есть...)

Я предполагаю, что это как-то связано с разрешениями, хотя я убедился, что файлы помечены как «Чтение и запись» для всех пользователей и исполняемые файлы. Но, возможно, это разрешение, которое мне нужно изменить на «более высоком уровне»? Отчаянный


person Toby    schedule 23.03.2011    source источник
comment
Требуется больше деталей. Обратите внимание, что . не включен в PATH по умолчанию (и не должен быть включен в путь), поэтому исполняемые файлы, расположенные в текущем рабочем каталоге, необходимо запускать с ./foo или ./bar.sh. Попробуйте echo $PATH, и pwd, и type <filename> для любого имени файла, с которым вы пытаетесь работать.   -  person sarnold    schedule 23.03.2011


Ответы (3)


Я изменил разрешения для папки, а затем перезагрузил компьютер. Затем это сработало (но пришлось перезапустить, что я думаю немного странно). Во всяком случае, теперь это работает :)

person Toby    schedule 23.03.2011
comment
вы должны принять свой собственный ответ (или другой, если хотите), чтобы этот вопрос отображался как решенный. - person belacqua; 24.03.2011

Если вы хотите узнать, какая версия файла будет работать в Linux/Unix, вы обычно можете ввести:

which prog

где "прог" - название программы. Например, если вы хотите узнать, где находится «emacs» или какую копию emacs вы на самом деле используете, вы можете ввести:

which emacs

На моей машине это возвращается с:

/usr/bin/emacs

В вашем случае, если путь, возвращаемый «который», не соответствует имени файла, который вы редактируете, это объясняет вашу путаницу и указывает вам правильное направление для решения проблемы. Я бы также проверил содержимое вашей переменной среды PATH, набрав:

echo $PATH

Если вы видите другой каталог в пути перед каталогом с файлом, который вы редактируете, это объясняет проблему. Также обратите внимание, что "." (текущий каталог) никогда не находится на пути или, по крайней мере, никогда не должен быть на пути по соображениям безопасности. Если вы хотите запустить программу в текущем каталоге, явно используйте форму «./prog», чтобы убедиться, что она запускает программу «prog» в текущем каталоге.

person Carl Staelin    schedule 23.03.2011

Из того, что вы мне говорите, это не имеет ничего общего с разрешениями.

Двойная, тройная, четверная проверка как в редакторе, так и в терминале, когда вы редактируете и запускаете одни и те же файлы. Это принесло мне довольно много моментов WTF.

Однако точные команды, которые вы вводите в свой терминал, могут помочь.

person orlp    schedule 23.03.2011