Я использую следующее, которое не связано с добавлением новых команд:
cd() {
builtin cd "$@"
local status=$?
[ $status -eq 0 ] && ls
return $status
}
Это делает работу cd той же, что и раньше, за исключением того, что есть ls.
Обратите внимание на следующие последствия. Другие примеры не позволяют аргументы cd. Хотя, по общему признанию, эти аргументы являются необычными, это замена на 100% совместимость. И поскольку он возвращает статус выхода cd, он не будет нарушать скрипты.
Здесь есть одна оговорка. Если вам когда-либо не нужна эта функциональность, вы должны вызвать builtin cd. Но мой опыт использования этой функции на протяжении многих лет заключается в том, что такие события встречаются редко, что происходит главным образом в сценариях, и удобство отсутствия необходимости вводить что-то долгое, как mycd каждый раз, когда вы хотите сменить каталоги, значительно перевешивает незначительный недостаток набора текста builtin cd один раз в синей луне.
$BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.
Локальная переменная , такая как $SHELL, действительна по всей системе. В текущей оболочке Bash $BASH указывает на путь выполнения bash, тогда как $SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно и то же значение).
Для объяснения среды переменные см. в разделе «Переменные среды» в справке Ubuntu.
$BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.
Локальная переменная , такая как $SHELL, действительна по всей системе. В текущей оболочке Bash $BASH указывает на путь выполнения bash, тогда как $SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно и то же значение).
Для объяснения среды переменные см. в разделе «Переменные среды» в справке Ubuntu.
$BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.
Локальная переменная , такая как $SHELL, действительна по всей системе. В текущей оболочке Bash $BASH указывает на путь выполнения bash, тогда как $SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно и то же значение).
Для объяснения среды переменные см. в разделе «Переменные среды» в справке Ubuntu.
$BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.
Локальная переменная , такая как $SHELL, действительна по всей системе. В текущей оболочке Bash $BASH указывает на путь выполнения bash, тогда как $SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно и то же значение).
Для объяснения среды переменные см. в разделе «Переменные среды» в справке Ubuntu.
$BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.
Локальная переменная , такая как $SHELL, действительна по всей системе. В текущей оболочке Bash $BASH указывает на путь выполнения bash, тогда как $SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно и то же значение).
Для объяснения среды переменные см. в разделе «Переменные среды» в справке Ubuntu.
$BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.
Локальная переменная , такая как $SHELL, действительна по всей системе. В текущей оболочке Bash $BASH указывает на путь выполнения bash, тогда как $SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно и то же значение).
Для объяснения среды переменные см. в разделе «Переменные среды» в справке Ubuntu.
$ BASH
- это локальная переменная, которая действительна только в текущей (bash) оболочке.
Действительны переменные окружения, такие как $ SHELL
общесистемный. В текущей оболочке Bash $ BASH
указывает на путь выполнения bash, тогда как $ SHELL
указывает на оболочку, определенную как по умолчанию (которая может иметь одно значение).
Для объяснения переменных среды см. Переменные среды в справке Ubuntu.
$ BASH
- это локальная переменная, которая действительна только в текущей (bash) оболочке.
Действительны переменные окружения, такие как $ SHELL
общесистемный. В текущей оболочке Bash $ BASH
указывает на путь выполнения bash, тогда как $ SHELL
указывает на оболочку, определенную как по умолчанию (которая может иметь одно значение).
Для объяснения переменных среды см. Переменные среды в справке Ubuntu.
$ BASH
- это локальная переменная, которая действительна только в текущей (bash) оболочке.
Действительны переменные окружения, такие как $ SHELL
общесистемный. В текущей оболочке Bash $ BASH
указывает на путь выполнения bash, тогда как $ SHELL
указывает на оболочку, определенную как по умолчанию (которая может иметь одно значение).
Для объяснения переменных среды см. Переменные среды в справке Ubuntu.
$ BASH
- это локальная переменная, которая действительна только в текущей (bash) оболочке.
Действительны переменные окружения, такие как $ SHELL
общесистемный. В текущей оболочке Bash $ BASH
указывает на путь выполнения bash, тогда как $ SHELL
указывает на оболочку, определенную как по умолчанию (которая может иметь одно значение).
Для объяснения переменных среды см. Переменные среды в справке Ubuntu.
$ BASH
- это локальная переменная, которая действительна только в текущей (bash) оболочке.
Действительны переменные окружения, такие как $ SHELL
общесистемный. В текущей оболочке Bash $ BASH
указывает на путь выполнения bash, тогда как $ SHELL
указывает на оболочку, определенную как по умолчанию (которая может иметь одно значение).
Для объяснения переменных среды см. Переменные среды в справке Ubuntu.
Переменная окружения является глобально доступной, в программе и дочерних программах. Переменная оболочки доступна только в текущей оболочке. Чтобы сделать переменную оболочки доступной как переменную среды, используйте export VARNAME (без доллара $).
Примеры для пояснения:
$ SOME=VAR # define shell variable $SOME
$ echo $SOME
VAR
$ env | grep SOME # note: no output
$ export SOME # turn $SOME into an environment variable
$ env | grep SOME
SOME=VAR
Другой способ определения среды переменная:
$ export ANOTHER=VALUE
$ echo $ANOTHER
VALUE
$ env | grep ANOTHER
ANOTHER=VALUE
Есть разница. Переменные оболочки и переменные среды объясняют это лучше, чем я могу, но вот отрывок из нее:
Если в переменную оболочки было внесено изменение, она должна быть явно «экспортирована» в соответствующую переменную среды для того, чтобы любые разветвленные подпроцессы увидели изменение. Напомним, что переменные оболочки являются локальными для оболочки, в которой они были определены.Shell Variable: Short Term, применяется только к текущему экземпляру оболочки, не применимо к системе
Экологическая переменная: долгосрочное использование, допустимая системная ширина, разрешено во всем мире
By условные переменные Shell Variable имеют свое имя в нижнем регистре, а Envn. Переменные записываются как прописные буквы
Чтобы ответить на этот вопрос, сначала попробуйте понять область действия переменной.
Когда вы создаете новую переменную типа SOME_ENV_VARIABLE="testing.txt", она находится в SHELL scope, это означает, что к ней можно получить доступ к этому экземпляру оболочки, в которой пользователь вошел в систему. Когда экземпляр меняет, например, вы открываете новый терминал или вы меняете оболочку (например, вы переключаетесь на csh), вы не можете получить доступ к этой переменной.
Когда вы экспортируете такую переменную, как export SOME_ENV_VARIABLE, эта переменная теперь доступна в области среды, что означает , что экземпляр оболочки , если вы меняете оболочку, вы все равно можете получить доступ к этой переменной. Давайте попробуем разобраться со следующим примером:
[vishrant@localhost]$ SOME_ENV_VARIABLE="testing.txt" #creating variable in bash shell
[vishrant@localhost]$ echo $SOME_ENV_VARIABLE
testing.txt
[vishrant@localhost]$ export SOME_ENV_VARIABLE #variable now available with environment
[vishrant@localhost]$ env | grep SOME_ENV_VARIABLE
SOME_ENV_VARIABLE=testing.txt
[vishrant@localhost]$ csh #changing shell
[vishrant@localhost ~/shell_scripting]$ echo $SOME_ENV_VARIABLE
testing.txt
[vishrant@localhost ~/shell_scripting]$ exit
exit #returned to parent shell
[vishrant@localhost]$ SOME_SHELL_VARIABLE="hello.txt"
[vishrant@localhost]$ csh
[vishrant@localhost ~/shell_scripting]$ echo $SOME_SHELL_VARIABLE
SOME_SHELL_VARIABLE: Undefined variable.
Аналогия: предположим, у вас есть квартира с двумя спальнями, и вы делитесь ею с другим соседом по комнате. С общей зоной можно связаться кто угодно, но не ваши спальни, переменная окружения подобна общей области, а переменная оболочки похожа на спальню, если вы будете что-то в общей области, к которой может обратиться любой, но если вы храните ее в своей спальне, она может
Помните, если открыть новый терминал, вы не сможете получить доступ к какой-либо из переменных, потому что вы меняете Analogy: . Для этого вы должны добавить свои переменные в .profile или .bashrc (если вы используете bash).
Shell Variable: Short Term, применяется только к текущему экземпляру оболочки, не применимо к системе
Экологическая переменная: долгосрочное использование, допустимая системная ширина, разрешено во всем мире
By условные переменные Shell Variable имеют свое имя в нижнем регистре, а Envn. Переменные записываются как прописные буквы
Есть разница. Переменные оболочки и переменные среды объясняют это лучше, чем я могу, но вот отрывок из нее:
Если в переменную оболочки было внесено изменение, она должна быть явно «экспортирована» в соответствующую переменную среды для того, чтобы любые разветвленные подпроцессы увидели изменение. Напомним, что переменные оболочки являются локальными для оболочки, в которой они были определены.Переменная окружения является глобально доступной, в программе и дочерних программах. Переменная оболочки доступна только в текущей оболочке. Чтобы сделать переменную оболочки доступной как переменную среды, используйте export VARNAME (без доллара $).
Примеры для пояснения:
$ SOME=VAR # define shell variable $SOME
$ echo $SOME
VAR
$ env | grep SOME # note: no output
$ export SOME # turn $SOME into an environment variable
$ env | grep SOME
SOME=VAR
Другой способ определения среды переменная:
$ export ANOTHER=VALUE
$ echo $ANOTHER
VALUE
$ env | grep ANOTHER
ANOTHER=VALUE
Чтобы ответить на этот вопрос, сначала попробуйте понять область действия переменной.
Когда вы создаете новую переменную типа SOME_ENV_VARIABLE="testing.txt", она находится в SHELL scope, это означает, что к ней можно получить доступ к этому экземпляру оболочки, в которой пользователь вошел в систему. Когда экземпляр меняет, например, вы открываете новый терминал или вы меняете оболочку (например, вы переключаетесь на csh), вы не можете получить доступ к этой переменной.
Когда вы экспортируете такую переменную, как export SOME_ENV_VARIABLE, эта переменная теперь доступна в области среды, что означает , что экземпляр оболочки , если вы меняете оболочку, вы все равно можете получить доступ к этой переменной. Давайте попробуем разобраться со следующим примером:
[vishrant@localhost]$ SOME_ENV_VARIABLE="testing.txt" #creating variable in bash shell
[vishrant@localhost]$ echo $SOME_ENV_VARIABLE
testing.txt
[vishrant@localhost]$ export SOME_ENV_VARIABLE #variable now available with environment
[vishrant@localhost]$ env | grep SOME_ENV_VARIABLE
SOME_ENV_VARIABLE=testing.txt
[vishrant@localhost]$ csh #changing shell
[vishrant@localhost ~/shell_scripting]$ echo $SOME_ENV_VARIABLE
testing.txt
[vishrant@localhost ~/shell_scripting]$ exit
exit #returned to parent shell
[vishrant@localhost]$ SOME_SHELL_VARIABLE="hello.txt"
[vishrant@localhost]$ csh
[vishrant@localhost ~/shell_scripting]$ echo $SOME_SHELL_VARIABLE
SOME_SHELL_VARIABLE: Undefined variable.
Аналогия: предположим, у вас есть квартира с двумя спальнями, и вы делитесь ею с другим соседом по комнате. С общей зоной можно связаться кто угодно, но не ваши спальни, переменная окружения подобна общей области, а переменная оболочки похожа на спальню, если вы будете что-то в общей области, к которой может обратиться любой, но если вы храните ее в своей спальне, она может
Помните, если открыть новый терминал, вы не сможете получить доступ к какой-либо из переменных, потому что вы меняете Analogy: . Для этого вы должны добавить свои переменные в .profile или .bashrc (если вы используете bash).
Есть разница. Переменные оболочки и переменные среды объясняют это лучше, чем я могу, но вот отрывок из нее:
Если в переменную оболочки было внесено изменение, она должна быть явно «экспортирована» в соответствующую переменную среды для того, чтобы любые разветвленные подпроцессы увидели изменение. Напомним, что переменные оболочки являются локальными для оболочки, в которой они были определены.Shell Variable: Short Term, применяется только к текущему экземпляру оболочки, не применимо к системе
Экологическая переменная: долгосрочное использование, допустимая системная ширина, разрешено во всем мире
By условные переменные Shell Variable имеют свое имя в нижнем регистре, а Envn. Переменные записываются как прописные буквы
Переменная окружения является глобально доступной, в программе и дочерних программах. Переменная оболочки доступна только в текущей оболочке. Чтобы сделать переменную оболочки доступной как переменную среды, используйте export VARNAME (без доллара $).
Примеры для пояснения:
$ SOME=VAR # define shell variable $SOME
$ echo $SOME
VAR
$ env | grep SOME # note: no output
$ export SOME # turn $SOME into an environment variable
$ env | grep SOME
SOME=VAR
Другой способ определения среды переменная:
$ export ANOTHER=VALUE
$ echo $ANOTHER
VALUE
$ env | grep ANOTHER
ANOTHER=VALUE
Чтобы ответить на этот вопрос, сначала попробуйте понять область действия переменной.
Когда вы создаете новую переменную типа SOME_ENV_VARIABLE="testing.txt", она находится в SHELL scope, это означает, что к ней можно получить доступ к этому экземпляру оболочки, в которой пользователь вошел в систему. Когда экземпляр меняет, например, вы открываете новый терминал или вы меняете оболочку (например, вы переключаетесь на csh), вы не можете получить доступ к этой переменной.
Когда вы экспортируете такую переменную, как export SOME_ENV_VARIABLE, эта переменная теперь доступна в области среды, что означает , что экземпляр оболочки , если вы меняете оболочку, вы все равно можете получить доступ к этой переменной. Давайте попробуем разобраться со следующим примером:
[vishrant@localhost]$ SOME_ENV_VARIABLE="testing.txt" #creating variable in bash shell
[vishrant@localhost]$ echo $SOME_ENV_VARIABLE
testing.txt
[vishrant@localhost]$ export SOME_ENV_VARIABLE #variable now available with environment
[vishrant@localhost]$ env | grep SOME_ENV_VARIABLE
SOME_ENV_VARIABLE=testing.txt
[vishrant@localhost]$ csh #changing shell
[vishrant@localhost ~/shell_scripting]$ echo $SOME_ENV_VARIABLE
testing.txt
[vishrant@localhost ~/shell_scripting]$ exit
exit #returned to parent shell
[vishrant@localhost]$ SOME_SHELL_VARIABLE="hello.txt"
[vishrant@localhost]$ csh
[vishrant@localhost ~/shell_scripting]$ echo $SOME_SHELL_VARIABLE
SOME_SHELL_VARIABLE: Undefined variable.
Аналогия: предположим, у вас есть квартира с двумя спальнями, и вы делитесь ею с другим соседом по комнате. С общей зоной можно связаться кто угодно, но не ваши спальни, переменная окружения подобна общей области, а переменная оболочки похожа на спальню, если вы будете что-то в общей области, к которой может обратиться любой, но если вы храните ее в своей спальне, она может
Помните, если открыть новый терминал, вы не сможете получить доступ к какой-либо из переменных, потому что вы меняете Analogy: . Для этого вы должны добавить свои переменные в .profile или .bashrc (если вы используете bash).
Чтобы ответить на этот вопрос, сначала попробуйте понять область видимости переменной.
Когда вы создаете новую переменную типа SOME_ENV_VARIABLE = "testing.txt"
, она находится в папке SHELL scope
, это означает, что к нему можно получить доступ к этому экземпляру оболочки, где пользователь вошел в систему. Когда экземпляр меняет, например, вы открываете новый терминал или вы меняете оболочку (например, вы переключаетесь на ] csh
), вы не можете получить доступ к этой переменной.
Когда вы экспортируете такую переменную, как , экспортируйте SOME_ENV_VARIABLE
, эта переменная теперь доступна в области среды, что означает в этом случае если вы измените оболочку, вы можете по-прежнему получить доступ к этой переменной. Давайте попробуем разобраться со следующим примером:
[vishrant @ localhost] $ SOME_ENV_VARIABLE = "testing.txt" #creating переменная в оболочке bash [vishrant @ localhost] $ echo $ SOME_ENV_VARIABLE test.txt [ vishrant @ localhost] $ export SOME_ENV_VARIABLE #variable теперь доступен с помощью среды [vishrant @ localhost] $ env | grep SOME_ENV_VARIABLE SOME_ENV_VARIABLE = test.txt [vishrant @ localhost] $ csh #changing shell [vishrant @ localhost ~ / shell_scripting] $ echo $ SOME_ENV_VARIABLE test.txt [vishrant @ localhost ~ / shell_scripting] $ exit exit # возвращено к исходной оболочке [vishrant @localhost] $ SOME_SHELL_VARIABLE = "hello.txt" [vishrant @ localhost] $ csh [vishrant @ localhost ~ / shell_scripting] $ echo $ SOME_SHELL_VARIABLE SOME_SHELL_VARIABLE: Неопределенная переменная.
Аналогия: предположим, у вас есть квартира с двумя спальнями, и вы делитесь ею с другим соседом по комнате. С общей зоной можно связаться кто угодно, но не ваши спальни, переменная окружения подобна общей области, а переменная оболочки похожа на спальню, если вы будете что-то в общей области, к которой может обратиться любой, но если вы храните ее в своей спальне, она может доступ к вам.
Помните, если открыть новый терминал, вы не сможете получить доступ к любой из переменных, потому что вы меняете этот экземпляр. Для этого вы должны добавить свои переменные в файл .profile
или .bashrc
(если вы используете bash).
Есть разница. Переменные оболочки и переменные среды объясняют это лучше, чем я могу, но вот отрывок из нее:
Если в переменную оболочки было внесено изменение, она должна быть явно «экспортирована» в соответствующую переменную среды для того, чтобы любые разветвленные подпроцессы увидели изменение. Напомним, что переменные оболочки являются локальными для оболочки, в которой они были определены.Переменная окружения является глобально доступной, в программе и дочерних программах. Переменная оболочки доступна только в текущей оболочке. Чтобы сделать переменную оболочки доступной как переменную среды, используйте export VARNAME (без доллара $).
Примеры для пояснения:
$ SOME=VAR # define shell variable $SOME
$ echo $SOME
VAR
$ env | grep SOME # note: no output
$ export SOME # turn $SOME into an environment variable
$ env | grep SOME
SOME=VAR
Другой способ определения среды переменная:
$ export ANOTHER=VALUE
$ echo $ANOTHER
VALUE
$ env | grep ANOTHER
ANOTHER=VALUE
Shell Variable: Short Term, применяется только к текущему экземпляру оболочки, не применимо к системе
Экологическая переменная: долгосрочное использование, допустимая системная ширина, разрешено во всем мире
By условные переменные Shell Variable имеют свое имя в нижнем регистре, а Envn. Переменные записываются как прописные буквы
Shell Variable: Short Term, применяется только к текущему экземпляру оболочки, не применимо к системе
Экологическая переменная: долгосрочное использование, допустимая системная ширина, разрешено во всем мире
By условные переменные Shell Variable имеют свое имя в нижнем регистре, а Envn. Переменные записываются как прописные буквы
Есть разница. Переменные оболочки и переменные среды объясняют это лучше, чем я могу, но вот отрывок из нее:
Если в переменную оболочки было внесено изменение, она должна быть явно «экспортирована» в соответствующую переменную среды для того, чтобы любые разветвленные подпроцессы увидели изменение. Напомним, что переменные оболочки являются локальными для оболочки, в которой они были определены.Переменная окружения является глобально доступной, в программе и дочерних программах. Переменная оболочки доступна только в текущей оболочке. Чтобы сделать переменную оболочки доступной как переменную среды, используйте export VARNAME (без доллара $).
Примеры для пояснения:
$ SOME=VAR # define shell variable $SOME
$ echo $SOME
VAR
$ env | grep SOME # note: no output
$ export SOME # turn $SOME into an environment variable
$ env | grep SOME
SOME=VAR
Другой способ определения среды переменная:
$ export ANOTHER=VALUE
$ echo $ANOTHER
VALUE
$ env | grep ANOTHER
ANOTHER=VALUE