1 ## compare_shells: bash
2
3 #### cdable_vars: resolve variable to path
4 shopt -s cdable_vars
5 export TARGET_DIR='/tmp'
6 cd TARGET_DIR
7 pwd
8 ## status: 0
9 ## STDOUT:
10 /tmp
11 /tmp
12 ## END
13
14 #### cdable_vars: fails when shopt is off
15 shopt -u cdable_vars
16 TARGET_DIR='/tmp'
17 cd TARGET_DIR
18 ## status: 1
19
20 #### cdable_vars: normal path still works when cdable_vars is set
21 shopt -s cdable_vars
22 cd /tmp
23 pwd
24 ## status: 0
25 ## STDOUT:
26 /tmp
27 ## END
28
29 #### cdable_vars: path takes priority over variable with same name
30 shopt -s cdable_vars
31 mkdir -p /tmp/testdir
32 cd /tmp/testdir
33 pwd
34 ## status: 0
35 ## STDOUT:
36 /tmp/testdir
37 ## END
38
39 #### cdable_vars: fails if variable points to a file not a directory
40 shopt -s cdable_vars
41 touch /tmp/my_file
42 VAR_NAME='my_file'
43 cd VAR_NAME
44 ## status: 1
45
46 #### cdable_vars: fails if variable is unset
47 shopt -s cdable_vars
48 unset TARGET_DIR
49 cd TARGET_DIR
50 ## status: 1
51
52 #### cdable_vars: array variable resolves to first element
53 shopt -s cdable_vars
54 TARGET_DIR=('/tmp' '/home')
55 cd TARGET_DIR
56 ## status: 0