Как состояния http://en.wikipedia.org/wiki/List_of_FTP_server_return_codes,
550 Требуемых мер, не принятых. Недоступный файл (например, файл, не найденный, никакой доступ).
У Вас или нет полномочий файловой системы получить доступ к этим каталогам или серверу, настраивается таким образом, что он рассматривает /home
как корень файловой системы.
Вы, возможно, конечно, погуглили немного и нашли что-то как http://www.linuxquestions.org/questions/linux-server-73/550-failed-to-change-directory-835003/
В Bash больше или равно 5 вы можете изменить $0
следующим образом:
$ cat bar.sh
#!/bin/bash
echo $0
BASH_ARGV0=lol
echo $0
$./bar.sh
./bar.sh
lol
ZSH даже поддерживает прямое назначение0
:
$ cat foo.zsh
#!/bin/zsh
echo $0
0=lol
echo $0
$./foo.zsh
./foo.zsh
lol
Помимо того, что уже упомянул Стефан, я могу придумать только один другой способ сделать это - вызвать процесс sh
, который означает, что ваша функция может быть сценарием. Но если вам все еще интересно:
fn() { sh -c "$(cat)" arg0 "$@" ; } <<\FNDEF
echo "My argv0 is $0 and my positionals are..."
printf %s\\n "$@"
#END
FNDEF
fn arg1 arg2 arg3
###OUTPUT###
My argv0 is arg0 and my positionals are...
arg1
arg2
arg3
Это не очень полезно, хотя, я не думаю.