source filename 与 sh filename 及./filename执行脚本的区别

本文详细解释了三种执行Shell脚本的方法:直接通过sh命令、使用./前缀和source命令的区别。重点介绍了每种方式下环境变量的行为变化,并通过实例展示了不同执行方式的效果。
source filename 与 sh filename 及./filename执行脚本的区别在那里呢?
1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。
2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。


举例说明:
1.新建一个test.sh脚本,内容为:A=1
2.然后使其可执行chmod +x test.sh
3.运行sh test.sh后,echo $A,显示为空,因为A=1并未传回给当前shell
4.运行./test.sh后,也是一样的效果
5.运行source test.sh 或者 . test.sh,然后echo $A,则会显示1,说明A=1的变量在当前shell中
Storm@Storm-PC:~/chromium/src$ ninja -C out/Release -j8 chrome ninja: Entering directory `out/Release' [198/56137] ACTION //build/rust/gni_impl:rustc_print_cfg(//build/toolchain/linux:clang_arm64) FAILED: gen/build/rust/gni_impl/rustc-print-cfg-aarch64-unknown-linux-gnu.txt python3 ../../build/rust/gni_impl/rustc_print_cfg.py --rust-prefix ../../third_party/rust-toolchain/bin --target aarch64-unknown-linux-gnu --output-path gen/build/rust/gni_impl/rustc-print-cfg-aarch64-unknown-linux-gnu.txt Traceback (most recent call last): File "/home/Storm/chromium/src/out/Release/../../build/rust/gni_impl/rustc_print_cfg.py", line 57, in <module> sys.exit(main()) File "/home/Storm/chromium/src/out/Release/../../build/rust/gni_impl/rustc_print_cfg.py", line 52, in main capture_rustc_cfg(args.rust_prefix, args.target, args.output_path) File "/home/Storm/chromium/src/out/Release/../../build/rust/gni_impl/rustc_print_cfg.py", line 43, in capture_rustc_cfg subprocess.run(args, stdout=output_file, check=True) File "/usr/local/python39/lib/python3.9/subprocess.py", line 505, in run with Popen(*popenargs, **kwargs) as process: File "/usr/local/python39/lib/python3.9/subprocess.py", line 951, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/local/python39/lib/python3.9/subprocess.py", line 1837, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) OSError: [Errno 8] Exec format error: '../../third_party/rust-toolchain/bin/rustc' [203/56137] RUST local_rustc_sysroot/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcore_core.rlib FAILED: local_rustc_sysroot/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcore_core.rlib "python3" "../../build/rust/gni_impl/rustc_wrapper.py" --rustc=../../third_party/rust-toolchain/bin/rustc --depfile=local_rustc_sysroot/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcore_core.rlib.d --rsp=local_rustc_sysroot/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcore_core.rlib.rsp -- -Clinker="../../third_party/llvm-build/Release+Asserts/bin/clang++" --crate-name core ../../third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/lib.rs --crate-type rlib --cfg=backtrace_in_libstd -Zforce-unstable-if-unmarked --cap-lints=allow --edition=2024 -Cforce-unwind-tables=no -Crelocation-model=pic -Zsplit-lto-unit -Clinker-plugin-lto=yes -Cdefault-linker-libraries -Zdep-info-omit-d-target -Zmacro-backtrace -Zremap-cwd-prefix=. -Zexternal-clangrt --color=always --target=aarch64-unknown-linux-gnu -Ccodegen-units=1 -Zunstable-options -Cpanic=immediate-abort -Zpanic_abort_tests --cfg cr_rustc_revision=\"192015283f6fe95e5b604273d13a428bab5fc0788f5a-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-22-8940-g4d4cb757\" -Copt-level=3 -Zdwarf-version=4 -g -Clinker-plugin-lto=yes -Zdefault-visibility=hidden -Dunsafe_op_in_unsafe_fn -Dwarnings -Zunstable-options -Cpanic=immediate-abort -Awarnings @../../build/rust/gni_impl/allow_all_warnings.rsp --sysroot=local_rustc_sysroot --emit=dep-info=local_rustc_sysroot/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcore_core.rlib.d,link -o local_rustc_sysroot/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcore_core.rlib LDFLAGS RUSTENV OUT_DIR=../../../../../../../../../out/Release/gen/build/rust/std/rules/core CFG_DISABLE_UNSTABLE_FEATURES=0 STD_ENV_ARCH=aarch64 CARGO_PKG_VERSION=0.0.0 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=0 CARGO_PKG_VERSION_PATCH=0 CARGO_PKG_VERSION_PRE= CARGO_PKG_NAME=core CARGO_PKG_DESCRIPTION=The\ Rust\ Core\ Library CARGO_PKG_REPOSITORY=https://github.com/rust-lang/rust.git CARGO_MANIFEST_DIR=../../build/rust/std/rules/core/crate Traceback (most recent call last): File "/home/Storm/chromium/src/out/Release/../../build/rust/gni_impl/rustc_wrapper.py", line 236, in <module> sys.exit(main()) File "/home/Storm/chromium/src/out/Release/../../build/rust/gni_impl/rustc_wrapper.py", line 205, in main r = subprocess.run([args.rustc, *rustc_args], env=env, check=False) File "/usr/local/python39/lib/python3.9/subprocess.py", line 505, in run with Popen(*popenargs, **kwargs) as process: File "/usr/local/python39/lib/python3.9/subprocess.py", line 951, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/local/python39/lib/python3.9/subprocess.py", line 1837, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) OSError: [Errno 8] Exec format error: PosixPath('../../third_party/rust-toolchain/bin/rustc') [204/56137] RUST local_rustc_sysroot/lib/rustlib/aarch64-unknown-linux-gnu/lib/libprofiler_builtins_profiler_builtins.rlib FAILED: local_rustc_sysroot/lib/rustlib/aarch64-unknown-linux-gnu/lib/libprofiler_builtins_profiler_builtins.rlib "python3" "../../build/rust/gni_impl/rustc_wrapper.py" --rustc=../../third_party/rust-toolchain/bin/rustc --depfile=local_rustc_sysroot/lib/rustlib/aarch64-unknown-linux-gnu/lib/libprofiler_builtins_profiler_builtins.rlib.d --rsp=local_rustc_sysroot/lib/rustlib/aarch64-unknown-linux-gnu/lib/libprofiler_builtins_profiler_builtins.rlib.rsp -- -Clinker="../../third_party/llvm-build/Release+Asserts/bin/clang++" --crate-name profiler_builtins ../../third_party/rust-toolchain/lib/rustlib/src/rust/library/profiler_builtins/src/lib.rs --crate-type rlib --cfg=backtrace_in_libstd -Zforce-unstable-if-unmarked --cap-lints=allow --edition=2024 -Cforce-unwind-tables=no -Crelocation-model=pic -Zsplit-lto-unit -Clinker-plugin-lto=yes -Cdefault-linker-libraries -Zdep-info-omit-d-target -Zmacro-backtrace -Zremap-cwd-prefix=. -Zexternal-clangrt --color=always --target=aarch64-unknown-linux-gnu -Ccodegen-units=1 -Zunstable-options -Cpanic=immediate-abort -Zpanic_abort_tests --cfg cr_rustc_revision=\"192015283f6fe95e5b604273d13a428bab5fc0788f5a-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-22-8940-g4d4cb757\" -Copt-level=3 -Zdwarf-version=4 -g -Clinker-plugin-lto=yes -Zdefault-visibility=hidden -Dunsafe_op_in_unsafe_fn -Dwarnings -Awarnings @../../build/rust/gni_impl/allow_all_warnings.rsp --sysroot=local_rustc_sysroot --emit=dep-info=local_rustc_sysroot/lib/rustlib/aarch64-unknown-linux-gnu/lib/libprofiler_builtins_profiler_builtins.rlib.d,link -o local_rustc_sysroot/lib/rustlib/aarch64-unknown-linux-gnu/lib/libprofiler_builtins_profiler_builtins.rlib LDFLAGS RUSTENV OUT_DIR=../../../../../../../../../out/Release/gen/build/rust/std/rules/profiler_builtins CFG_DISABLE_UNSTABLE_FEATURES=0 STD_ENV_ARCH=aarch64 CARGO_PKG_VERSION=0.0.0 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=0 CARGO_PKG_VERSION_PATCH=0 CARGO_PKG_VERSION_PRE= CARGO_PKG_NAME=profiler_builtins CARGO_MANIFEST_DIR=../../build/rust/std/rules/profiler_builtins/crate Traceback (most recent call last): File "/home/Storm/chromium/src/out/Release/../../build/rust/gni_impl/rustc_wrapper.py", line 236, in <module> sys.exit(main()) File "/home/Storm/chromium/src/out/Release/../../build/rust/gni_impl/rustc_wrapper.py", line 205, in main r = subprocess.run([args.rustc, *rustc_args], env=env, check=False) File "/usr/local/python39/lib/python3.9/subprocess.py", line 505, in run with Popen(*popenargs, **kwargs) as process: File "/usr/local/python39/lib/python3.9/subprocess.py", line 951, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/local/python39/lib/python3.9/subprocess.py", line 1837, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) OSError: [Errno 8] Exec format error: PosixPath('../../third_party/rust-toolchain/bin/rustc') [205/56137] ACTION //components/data_sharing/data_sharing_internals/webui:mojo_bindings__type_mappings_ts__validator(//build/toolchain/linux:clang_arm64) ninja: build stopped: subcommand failed. 如何解决
09-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值