Я пытаюсь создать bash-скрипт, в котором каждый раз, когда я выполняю команду cd
, я получаю список файлов и папок новой папки (ls
).
Я нашел следующую функцию bash, чтобы сделать это:
#!/bin/bash
cs() { cd "$@" && ls; }
Я сохранил это: ~/.scripts/cs
. Это сработало. Я добавил его в свой PATH
, в .bash_profile
:
PATH=$PATH:$HOME/.scripts
export PATH
Когда я выполняю это как . .scripts/cs
, это работает, но когда я в другом окне, ничего не происходит. Я подумал, что мне нужно вызвать функцию внутри скрипта, поэтому я изменил ее:
#!/bin/bash
cs() { cd "$@" && ls; }
cs
И теперь, когда я выполняю cs в других окнах, я просто получаю правильную команду ls
, но она не меняет каталог.
После всего, что я прочитал, я пришел к выводу, что команда cs выполняется в «подоболочке», и команда cd выполняется там, а в моей текущей оболочке я получаю только ls
. Я попытался создать псевдоним в моем файле .bashrc
:
alias cs='. cs'
Но, честно говоря, я не знаю, что должно произойти, и я получаю только следующую ошибку:
bash: /home/ggf/.scripts/cs: line 4: syntax error near unexpected token `('
bash: /home/ggf/.scripts/cs: line 4: `cs() { cd "$@" && ls; }'
Есть решение или рекомендация? Извините за мой плохой английский, я из Аргентины. Любое решение для последней ошибки тоже? Я думаю, что это было бы полезно для другого случая.