Так использование окон колотит, я создал .sh файл (passwords.sh расположенный в ~/../), который я работал на следующих командах:
chmod 600 passwords.sh
sudo shown toot:root passwords.sh
Затем в моем .bash_profile (расположенный в домашней папке ~/) у меня есть следующая функция
function passwords {
case "1$" in
'update')
'sudo vim ~/../passwords.sh';;
*)
'sudo bash ~/../passwords.sh';;
esac
}
Выполнение команды непосредственно от терминала не приводит ни к каким проблемам;
ruben@DESKTOP-4RTTB0B:/home$ sudo bash ~/../passwords.sh
[sudo] password for ruben:
[content displayed as intentionally]
ruben@DESKTOP-4RTTB0B:/home$ sudo vim ~/../passwords.sh
[open with vim editor]
но выполняя новые функциональные урожаи
ruben@DESKTOP-4RTTB0B:/home$ passwords
-bash: sudo bash ~/../passwords.sh: No such file or directory
ruben@DESKTOP-4RTTB0B:/home$ passwords update
-bash: sudo vim ~/../passwords.sh: No such file or directory
Почему это работает в терминале, но не из .bash_profile файла? Другой подобный funcions в .bash_profile файле хорошо работает. Спасибо за весь help^^
Вы, как предполагается, не заключаете команду в кавычки. Запишите это таким образом:
function passwords {
case "$1" in
'update')
sudo vim ~/../passwords.sh;;
*)
sudo bash ~/../passwords.sh;;
esac
}
Проблема - это, тильда ~
привычка быть расширенным в любом виде меток кавычки. Так, необходимо изменить соответствующие строки таким образом:
sudo vim ~'/../passwords.sh';;
Или лучше:
sudo vim "$HOME/../passwords.sh";;
И почему (не в этом случае) с помощью полного пути вместо относительного:
sudo vim "/home/passwords.sh";;
Цитата в рамках команды используется для разграничивания значений позиционных параметров команды, иначе необходимо выйти из каждого пробела или любого другого специального символа:
command 'first positional parameter' 'second one' "$THE_THIRD" our\ forth\ parameter
Отметьте, большинство оболочек развернет переменные только в метках двойной кавычки в метках одинарной кавычки, название переменной будет обработкой как строкой и привычкой быть расширенным.